Поиск по этому блогу

суббота, 16 января 2010 г.

секреты командной строки

секреты командной строки - очень много интересных и полезных для работы команд и примеров.

NVIDIA, Xorg


Подгружаем Composite Extension в Xorg:
sudo nvidia-xconfig –-composite
sudo nvidia-xconfig –-allow-glx-with-composite


Смотрим, что ещё можно наколбасить:
nvidia-xconfig -A


Смотрим на свой Х-сервер:
xdpyinfo
xvinfo
glxinfo
xrestop #(особенно ежели утечки имеют место...)


RPM
Чего у нас тут (поиск – давим “/” и пишем чего трэба):
rpm -qa | sort | less


А шо тут понасовали ?:
rpm -ql имя_пакета


А это откуда ??? :
rpm -qf Путь_к_файлу/файл
rpm -qf `which файл`


Фунтик вроде бы и есть... но ушёл... далеко ушёл:
sudo rm -rf `rpm -ql имя_пакета`


Собираем из spec-а:
rpmbuild -bb Путь_к_spec_файлу/file.spec


Устанавливаем несколько версий пакетов (особенно для kernel полезно):
rpm -i пакет.rpm


Апгрейдим установленные пакеты (в живых должен остаться только один...):
rpm -Uhv пакет.rpm


Прочая... прочая... прочая...
Ежели файлов туча, а надоть их того...:
for i in `ls /каталог/`; do
mv $i /другой_каталог
done
или
(cd каталог; ls|xargs -i mv {} другой_каталог)


Удаляем хлам, старше 2-х недель:
find /Путь_к_файлам/файлы* -mtime +13 -exec rm {} \;


Удаляем файлы из списка:
cat list.txt | tr '\n' '\000'| xargs -0 rm -f


Обнулить файл:
>file
echo > file


И что у нас внутри ??? :
sudo dmidecode
hwinfo

lspci
lsdev
cat /proc/cpuinfo
cat /proc/interrupts
procinfo


А чтой-то винтик не шуршит ???:
smartctl -a /dev/ВИНТИК
hdparm -i /dev/ВИНТИК
fdisk -l


О чём Вы мне, Мадам, орали, когда я Вас грузил ???:
dmesg


Сколько секунд Юникс живе среди нас:
echo "GMT = `date +%s` seconds since 1970"


Хто здесь?! ACHTUNG!!!:
last
who
w


Что-то с памятью моей стало...:
free
vmstat


Сколько осталось на хардах под порнуху ???:
df -h


А сколько отъел этот каталог ? :
du -sh /каталог


Размер всех директорий в данном каталоге :
find . -maxdepth 1 -type d -exec du -sk {} \; | sort -rn


Файло – на чтение-запись!!!
find ./ -type f -exec chmod 644 {} \;


Каталоги – открывайте врата!
find ./ -type d -exec chmod 755 {} \;


Поиск файлов принадлежащих специфическому юзеру и перевод их нa другого:
find ./ -uid 0 -exec chown 500 {} \;


Перевод имен файлов и директорий в определенном каталоге в нижний регистр:
for x in *; do mv "$x" "`echo $x | tr [A-Z] [a-z]`"; done


Удаление пропусков в именах файлов и директорий и подстановка нижней черты “_” в определенном каталоге:
for x in *; do mv "$x" `echo $x | sed -e 's/ /_/g'`; done
или
for x in *; do mv "$x" ${x// /_}; done


Что вообще происходит ??? :
top
ps aux
pstree


Re: Как удалить символы из строки средствами bash?
a="1 2 3 4" ; b=${a// /} ; echo $b
1234


Меняем время на часах:
допустим, что сейчас 31 июля 23:30:04 года 2007-го:
sudo date “073123302007.04”


теперь сбросим это время на часы компа:
sudo /sbin/hwclock --systohc

Монтируем ftp в файловую систему (для curlftpfs версии 0.9.1 и выше)
выполняем скрипт таким образом (опция codepage - не сочтите за рекламу):
$~/bin/mount_ftp kernel.org
для размонтирования достаточно выполнить
mount_ftp
без аргументов. монтирование пользователем без параметра allow_root
крайне нежелательно (с точки зрения администратора по крайней мере).

$ cat ~/bin/mount_ftp

#!/bin/sh
mount_folder="/mnt/ftp"

if [ "`mount | grep $mount_folder`" == "" ] ; then
sudo curlftpfs ftp://$1 $mount_folder -o \

codepage=cp1251,uid=1000,gid=100,allow_other
else sudo fusermount -u $mount_folder && \
sudo curlftpfs ftp://$1 $mount_folder -o \

codepage=cp1251,uid=1000,gid=100,allow_other \
|| { echo "error occured or you just unmount your ftp" && exit ; }
fi
# EOF


несколько полезных программ для поддержания хорошего настроения:

snort
aide
rkhunter
chkrootkit



AUDIO/VIDEO
Переводим видео из avi в gif :
mplayer -vo png video.avi
convert -dispose previous -delay 10 -page +0+0 *.png animation.gif


Делаем “сдвиги” в видеофайлах:
ffmpeg -i 1.avi -padcolor 00FF00 -padleft 100 -s 630x480 2.avi
Слушаем радио:
mplayer http://адрес:порт/точка_монтирования
N.B. По http://адрес:порт/точка_монтирования.m3u или http://адрес:порт/точка_монтирования.pls нам “выдадут” плейлист, но нам он не нужен. Можно сохранить плейлист, открыть и посмотреть, куда именно обращаться.


Смотрим мультикаст видео:
mplayer udp://@адрес:порт
Смотрим, что у нас с видео и аудио кодеками:
mplayer -vc help
mplayer -ac help
mencoder -ovc help
mencoder -oac help
ffmpeg -formats



Смотрим наши “демуксеры”:
mplayer -audio-demuxer help


Перебиваем индексы в битом видео для работы “перемотки”
mplayer -forceidx file.avi


Делаем видео из jpg файлов:
mencoder "mf://*.jpg" -mf fps=25 -ovc copy -o file_jpg.avi
 Прикручиваем к этому видео звуковую дорожку:
 mencoder file_jpg.avi -o  file_jpg_snd1.avi -oac copy -ovc copy -audiofile audio.mp3
 Прикручиваем к этому видео вторую звуковую дорожку:
ffmpeg -i file_jpg_snd1.avi -i audio2.mp3 -vcodec copy \
-acodec copy file_jpg_snd2.avi -newaudio


Потрошим DVD:
ffmpeg -i /media/dvd/VIDEO_TS/VTS_01_1.VOB \
-acodec copy -map 0:2 audio.ac3

FFmpeg version SVN-r9451, Copyright (c) 2000-2007 Fabrice Bellard, et al.

configuration:
--prefix=/usr/local --mandir=/usr/share/man --enable-libmp3lame
--enable-libogg --enable-libvorbis --enable-libfaad --enable-libfaac
--enable-libxvid --enable-liba52 --enable-pp --enable-swscaler
--enable-gpl --enable-gprof --enable-libx264 --enable-libamr-nb
--enable-libamr-wb --enable-pthreads --enable-x11grab
--enable-libtheora --cc=/home/sda/bin/gcc

libavutil version: 49.4.1
libavcodec version: 51.40.4
libavformat version: 51.12.1
built on Jun 29 2007 21:03:07, gcc: 4.2.0
Input #0, mpeg, from '/media/dvd/VIDEO_TS/VTS_01_1.VOB':
Duration: 00:25:11.8, start: 0.287267, bitrate: 5680 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576, 7500 kb/s, 25.00 fps(r)
Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5:1, 448 kb/s
Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5:1, 384 kb/s
Stream #0.3[0x82]: Audio: ac3, 48000 Hz, stereo, 96 kb/s
File 'audio.ac3' already exists. Overwrite ? [y/N] y
Output #0, ac3, to 'audio.ac3':
Stream #0.0: Audio: ac3, 48000 Hz, 5:1, 384 kb/s
Stream mapping:
Stream #0.2 -> #0.0
Press q to stop encoding
size= 37988kB time=810.4 bitrate= 384.0kbits/s
video:0kB audio:37988kB global headers:0kB muxing overhead 0.000000%
Received signal 2: terminating.

*******************************************************************************************************


разбираем "на пальцах". выше - dvd с тремя аудио дорожками и одной видео:
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576, 7500 kb/s, 25.00 fps(r)
Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5:1, 448 kb/s
Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5:1, 384 kb/s
Stream #0.3[0x82]: Audio: ac3, 48000 Hz, stereo, 96 kb/s


а команда в самом верху делает копию второй аудиодорожки в audio.ac3 (без потерь),
соответственно
можно скопировать все 3 аудиодорожки а потом - запихать их в пережатую
(надеюсь, что x264-м кодеком) авишку, огг или что-там-душа-просит...
(“потрошить” можно практически всё, равно как и “собирать”)


Тупенько рипаем DVD (параметры x264encopts лучше сразу положить в ~/.mplayer/mencoder.conf):
mencoder dvd://1 -oac copy -ovc x264 -o dvdrip.avi
или
mencoder dvd://1 -oac mp3lame -ovc x264 -o dvdrip.avi


Собираем несколько видеофайлов в один (можно с -nosound если вдруг чего):
mencoder file.avi file1.avi file2.avi ... -o result.avi


Делаем мувик для мобилки с экраном 128x96:
ffmpeg -i file.avi -s sqcif -ar 8000 -ac 1 -ab 12.2K file.3gp
или
ffmpeg -i file.avi -s 128x96 -ar 8000 -ac 1 -ab 12.2K file.3gp


Кодируем mencoder-ом на лету видео с ТВ-тюнера в файл tv.avi:
mencoder
-tv
driver=v4l2:width=768:height=576:device=/dev/video0:norm=SECAM:buffersize=128:f
ps=25:audiorate=22050:forceaudio -oac mp3lame tv:// -o tv.avi -ovc lavc
-lavcopts
vcodec=mpeg4:autoaspect=1:vbitrate=1200:vme=4:vqscale=3:vb_strategy=1:keyint=30



Опций
и вариантов – море, читайте маны, экспериментируйте, у Вас в руках –
самые мощные универсальные средства для работы с мультимедиа. Они
требуют многого, но и результат того стоит.
Вот ещё несколько ссылок по кодированию видео с помощью mplayer/ffmpeg:
http://strannick.blogspot.com/2007/04/x264.html
http://www.linuxjournal.com/article/9005
http://www.opennet.ru/base/sys/mencoding_pop.txt.html
Проект
ffmpeg развивается очень динамично, поэтому информация по использованию
опций кодеков (особенно x264) “устаревает” довольно быстро. Если что-то
не получается – не паникуйте. Кодирование видео – не простая
дисциплина, старайтесь больше экспериментировать и читайте документацию
к каждому используемому кодеку.