Здесь представлен список команд Linux для выполнения типичных операций.
Команды, отмеченные знаком • "готовы к употреблению" и могут быть скопированы, вставлены и использованы в терминале без каких-либо ограничений.
Команда |
Описание |
• |
apropos word |
Показать команды, соответствующие слову word. См. также threadsafe |
|
which command |
Показать полное имя команды |
|
time command |
Показать время выполнения команды |
• |
time cat |
Запустить таймер. Для остановки использовать Ctrl-d. См. также sw |
• |
nice info |
Запустить команду (в данном случае info) с низким приоритетом выполнения |
• |
renice 19 -p $$ |
Понизить приоритет выполнения оболочки (скрипта). Используется для неинтерактивных задач |
• |
look prefix |
Быстрый поиск по (отсортированному) словарю |
• |
grep –color expr...ion /usr/share/dict/words |
Подсветка совпадений с регулярным выражением в словаре |
|
gpg -c file |
Зашифровать файл |
|
gpg file.gpg |
Расшифровать файл |
• |
alias hd='od -Ax -tx1z -v' |
Удобный шестнадцатеричный дамп. (пример использования: • hd /proc/self/cmdline | less) |
• |
alias realpath='readlink -f' |
Привести путь к каноническому виду. (пример использования: • realpath ~/../$USER) |
• |
set | grep $USER |
Поиск в текущей среде окружения |
• |
ls /usr/bin | pr -T9 -W$COLUMNS |
Вывод в 9 столбцов по ширине терминала |
|
touch -c -t 0304050607 file |
Задать временную отметку (timestamp) файла (ГГММДДччмм) |
Навигация по директориям |
• |
cd - |
Перейти в предыдущую директорию |
• |
cd |
Перейти в домашнюю директорию |
|
(cd dir && command) |
Перейти в директорию, выполнить команду и вернуться в текущую директорию |
• |
pushd . |
Поместить текущую директорию в стек, так что Вы сможете к ней вернуться с помощью popd |
CD-диски |
|
gzip < /dev/cdrom > cdrom.iso.gz |
Сохранить копию cdrom с данными |
|
mkisofs -V NAME -r dir | gzip > cdrom.iso.gz |
Создать образ CD на основе содержимого директории |
|
mount -o loop cdrom.iso /mnt/dir |
Монтировать образ CD в /mnt/dir (только на чтение) |
|
cdrecord -v dev=/dev/cdrom blank=fast |
Очистить CDRW-болванку |
|
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom - |
Записать образ CD (используйте dev=ATAPI -scanbus для подтверждения устройства) |
|
cdparanoia -B |
Преобразовать звуковые дорожки с CD в wav файлы в текущей директории |
|
cdrecord -v dev=/dev/cdrom -audio *.wav |
Создать звуковой CD из всех wav-файлов в текущей директории (см. также cdrdao) |
|
oggenc –tracknum='track' track.cdda.wav -o 'track.ogg' |
Преобразовать wav-файл в ogg-файл |
Архивы |
|
tar c dir/ | bzip2 > dir.tar.bz2 |
Создать из dir/ архив |
|
bzip2 -dc dir.tar.bz2 | tar x |
Извлечь содержимое архива (использовать gzip вместо bzip2 для файлов tar.gz) |
|
tar c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg' |
Создать из dir/ криптованный архив на удалённой машине |
|
find dir/ -name '*.txt' | tar c –files-from=- | bzip2 > dir_txt.tar.bz2 |
Создать архив из выборки по директории dir/ и ниже |
|
find dir/ -name '*.txt' | xargs cp -a –target-directory=dir_txt/ –parents |
Создать копию выборки по директории dir/ и ниже |
|
( tar c /dir/to/copy ) | ( cd /where/to/ && tar x -p ) |
Копировать (с полномочиями) директорию copy/ в директорию /where/to/ |
|
( cd /dir/to/copy && tar c . ) | ( cd /where/to/ && tar x -p ) |
Копировать (с полномочиями) содержимое директории copy/ в /where/to/ |
|
( tar c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar x -p' |
Копировать (с полномочиями) директорию copy/ в директорию remote:/where/to/ |
|
dd bs=1M if=/dev/hda | gzip | ssh user@remote 'dd of=hda.gz' |
Создать резервную копию жёсткого диска на удалённой машине |
rsync (для тестов использовать опцию –dry-run) |
|
rsync -P rsync://rsync.server.com/path/to/file file |
Получение только различий. Позволяет выполнять синхронизацию в несколько заходов в случае проблем с закачкой |
|
rsync –bwlimit=1000 fromfile tofile |
Локальное копирование с ограничением скорости. Подобно nice для ввода/вывода |
|
rsync -az -e ssh –delete ~/public_html/ remote.com:'~/public_html' |
Создать "зеркало" веб-сайта (используя сжатие и шифрование) |
|
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ |
Синхронизировать текущую директорию с удалённой |
Поиск файлов |
• |
alias l='ls -l –color=auto' |
Быстрый листинг директории |
• |
ls -lrt |
Листинг файлов, отсортированный по дате. См. также newest |
|
find -name '*.[ch]' | xargs grep -E 'expr' |
Искать 'expr' в текущей директории и ниже. См. также findrepo |
|
find -type f -print0 | xargs -r0 grep -F 'string' |
Искать во всех обычных файлах в текущей директории и ниже строку 'string' |
|
find -maxdepth 1 -type f | xargs grep -F 'string' |
Искать во всех обычных файлах в текущей директории строку 'string' |
|
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done |
Произвести над каждым элементом списка несколько действий (в цикле while) |
• |
find -type f ! -perm -444 |
Поиск файлов, не доступных на чтение для всех (полезно для веб-сайта) |
• |
find -type d ! -perm -111 |
Поиск директорий, не доступных для всех (полезно для веб-сайта) |
• |
locate -r 'file[^/]*\.txt' |
Поиск имён файлов в кешированном индексе. Окончание команды работает как шаблон *file*.txt |
Работа в сети (обратите внимание, команды ifconfig, route, mii-tool, nslookup - устаревшие) |
• |
ip link show |
Список сетевых интерфейсов |
|
ethtool interface |
Вывести статус сетевого интерфейса |
|
ip link set dev eth0 name wan |
Переименовать eth0 в wan |
|
ip addr add 1.2.3.4/24 brd + dev eth0 |
Добавить ip и маску (255.255.255.0) |
|
ip link set dev interface up |
Подключить сетевой интерфейс (или отключить, используя interface down) |
|
ip route add default via 1.2.3.254 |
Установить по-умолчанию шлюз 1.2.3.254 |
• |
tc qdisc add dev lo root handle 1:0 netem delay 20msec |
Добавить задержку ответа в 20мс устройству обратной связи (для тестирования) |
• |
tc qdisc del dev lo root |
Убрать заданную выше задержку |
• |
host pixelbeat.org |
Определить ip-адрес по имени хоста и наоборот |
• |
hostname -i |
Определить локальный ip-адрес (то же, что и host `hostname`) |
• |
netstat -tupl |
Вывести список internet-сервисов в системе |
• |
netstat -tup |
Вывести список активных соединений с системой / системы |
wget (многофункциональная утилита закачки) |
• |
(cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) |
Сохранить локальную, пригодную для просмотра версию веб-страницы в текущей директории |
|
wget -c http://www.example.com/large.file |
Возобновление закачки частично скаченного файла |
|
wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/ |
Скачать группу файлов в текущую директорию |
|
wget ftp://remote/file[1-9].iso/ |
FTP поддерживает непосредственную подстановку |
• |
wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head |
Непосредственно обработать вывод |
|
echo 'wget url' | at 01:00 |
Скачать url в час ночи в текущую директорию |
|
wget –limit-rate=20k url |
Осуществить закачку с низким приоритетом (в данном случае ограничение - 20Kb/s) |
|
wget -nv –spider –force-html -i bookmarks.html |
Проверить ссылки в файле |
|
wget –mirror http://www.example.com/ |
Эффективно обновить локальную копию сайта (удобно вызывать по cron-у) |
windows (отметьте, что samba - это пакет, обеспечивающий всю специфичную для windows поддержку сети) |
• |
smbtree |
Найти машины под windows. См. также findsmb |
|
nmblookup -A 1.2.3.4 |
Найти виндовое (netbios) имя, привязанное к ip-адресу |
|
smbclient -L windows_box |
Вывести список расшаренных ресурсов на машине под windows или сервере samba |
|
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share |
Монтировать расшаренную windows-папку |
|
echo 'message' | smbclient -M windows_box |
Послать сообщение во всплывающем окне на windows-машину (по-умолчанию отключено в XP sp2) |
Математика |
• |
echo '(1 + sqrt(5))/2' | bc -l |
Быстрые математические вычисления (вычислить φ) |
• |
echo 'obase=16; ibase=10; 123' | bc |
Смена системы счисления (десятичной на шестнадцатиричную) |
• |
echo $((0x2dec)) |
Смена системы счисления (шестнадцатеричной на десятичную) ((арифметическое расширение shell)) |
• |
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc |
Более сложное (целочисленное) выражение. В примере вычисляется максимальная норма прохождения пакетов в сети FastEthernet |
• |
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python |
Python понимает научную форму записи чисел |
• |
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist |
Построить график нормы прохождения пакетов в сети FastEthernet в зависимости от размера пакетов |
Манипуляции с текстом (отметьте, что sed использует потоки stdin и stdout, поэтому если Вы хотите редактировать файлы, добавляйте к командам <oldfile >newfile) |
|
sed 's/string1/string2/g' |
Заменить string1 на string2 |
|
sed 's/\(.*\)1/\12/g' |
Преобразовать anystring1 в anystring2 |
|
sed '/ *#/d; /^ *$/d' |
Удалить комментарии и пробельные строки |
|
sed ':a; /\\$/N; s/\\\n//; ta' |
Произвести конкатенацию (объединение) строк конечными \ |
|
sed 's/[ \t]*$//' |
Убрать конечные пробелы из строк |
|
sed 's/\([\\`\\"$\\\\])/\\\1/g' |
Экранировать метасимволы shell, срабатывающие в двойных кавычках |
|
sed -n '1000p;1000q' |
Вывести 1000ую строку |
|
sed -n '10,20p;20q' |
Вывести строки с 10 по 20 |
|
sed -n 's/.*<[tT][iI][tT][lL][eE]>\(.*\)<\/[tT][iI][tT][lL][eE]>.*/\1/p;T;q' |
Извлечь заголовок из HTML-страницы |
|
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n |
Сортировка ip-адресов стандарта IPV4 |
• |
echo 'Test' | tr '[:lower:]' '[:upper:]' |
Смена регистра букв |
• |
tr -dc '[:print:]' < /dev/urandom |
Фильтровать невыводимые символы |
• |
grep 'processor' /proc/cpuinfo | wc -l |
Подсчёт числа строк |
Операции над множествами (Обратите внимание, LANG=C задано для большей скорости) |
|
LANG=C sort file1 file2 | uniq |
Объединение несортированных файлов |
|
LANG=C sort file1 file2 | uniq -d |
Пересечение несортированных файлов |
|
LANG=C sort file1 file1 file2 | uniq -u |
Разница между несортированными файлами |
|
LANG=C sort file1 file2 | uniq -u |
Симметрическая разность между несортированными файлами |
|
LANG=C comm file1 file2 | sed 's/^\t*//' |
Объединение отсортированных файлов |
|
LANG=C comm -12 file1 file2 |
Пересечение отсортированных файлов |
|
LANG=C comm -13 file1 file2 |
Разница между отсортированными файлами |
|
LANG=C comm -3 file1 file2 | sed 's/^t*//' |
Симметрическая разность между отсортированными файлами |
Календарь |
• |
cal -3 |
Вывести календарь |
• |
cal 9 1752 |
Вывести календарь на определённый месяц года |
• |
date -d fri |
Узнать дату этой пятницы. См. также day |
• |
date –date='25 Dec' +%A |
На какой день в этом году выпадает католическое рождество? |
• |
date –date '1970-01-01 UTC 1234567890 seconds' |
Преобразовать число секунд с начала эпохи в дату |
• |
TZ=':America/Los_Angeles' date |
Который сейчас час на западном побережье США? (используйте tzselect для получения TZ - временной зоны) |
|
echo "mail -s 'get the train' P@draigBrady.com < /dev/null" | at 17:45 |
Напоминание о событии по электронной почте |
• |
echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes" |
Высплывающее напоминание о событии |
Локали |
• |
printf "%'d\n" 1234 |
Вывести число с группировкой разрядов в соответствии с локалью |
• |
echo "I live in `locale territory`" |
Извлечь информацию из базы данных локали |
• |
locale | cut -d= -f1 | xargs locale -kc | less |
Вывести список полей в базе данных локали |
• |
LANG=en_IE.utf8 locale int_prefix |
Поиск информации о локали для заданной страны. См. также ccodes |
Дисковое пространство (см. также FSlint) |
• |
ls -lSr |
Вывести файлы, самые большие - в конце списка |
• |
du -s * | sort -k1,1rn | head |
Показать главных потребителей дискового пространства в текущей директории. См. также dutop |
• |
df -h |
Показать размер свободного дискового пространства |
• |
df -i |
Вывести свободные иноды (inodes) |
• |
fdisk -l |
Вывести размеры и типы дисковых партиций (запускать от root-а) |
• |
rpm -q -a –qf "%10{SIZE}\t%{NAME}\n" | sort -k1,1n |
Вывести список всех установленных пакетов, отсортированный по размеру (в байтах), на rpm-дистрибутивах |
• |
dpkg-query -W -f="${Installed-Size;10}\t${Package}\n" | sort -k1,1n |
Вывести список всех установленных пакетов, отсортированный по размеру (в килобайтах), на deb-дистрибутивах |
• |
dd bs=1 seek=2TB if=/dev/null of=ext3.test |
Создать большой тестовый файл (не занимающий места). См. также truncate |
Мониторинг / отладка |
• |
strace -c ls >/dev/null |
Подвести итог / детально показать системные вызовы, произведённые командой |
• |
strace -f -e open ls >/dev/null |
Вывести список системных вызовов, произведённых командой |
• |
ltrace -f -e getenv ls >/dev/null |
Вывести список библиотечных вызовов, произведённых командой |
• |
lsof -p $$ |
Вывести список путей, открытых процессом с заданным id |
• |
lsof ~ |
Вывести список процессов, открывших указанный путь |
• |
tcpdump not port 22 |
Показать сетевой траффик за исключением ssh. См. также tcpdump_not_me |
• |
ps -e -o pid,args –forest |
Вывести иерархический список процессов |
• |
ps -e -o pcpu,cpu,nice,state,cputime,args –sort pcpu | sed '/^ 0.0 /d' |
Список процессов с сортировкой по % использования cpu |
• |
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS |
Список процессов с сортировкой по объёму использования памяти. См. также ps_mem.py |
• |
ps -C firefox-bin -L -o pid,tid,pcpu,state |
Вывести все нити (threads) для конкретного процесса |
• |
ps -p 1,2 |
Вывести информацию о процессах с указанными id |
• |
last reboot |
Показать историю перезагрузок системы. |
• |
free -m |
Вывести количество (оставшейся) ОЗУ (ключ -m задаёт отображение в Mb) |
• |
watch -n1 'cat /proc/interrupts' |
Смотреть меняющиеся данные непрерывно |
Системная информация |
|
hdparm -i /dev/hda |
Показать информацию о диске hda |
|
hdparm -tT /dev/hda |
Выполнить тест на скорость чтения с диска hda |
|
badblocks -s /dev/hda |
Выполнить тест на нечитаемые блоки на диске hda |
• |
mount | column -t |
Вывести подмонтированные файловые системы (с выравниванием вывода) |
• |
cat /proc/partitions |
Вывести все партиции, зарегистрированные в системе |
• |
grep MemTotal /proc/meminfo |
Вывести общий объем оперативной памяти, видимой системой |
• |
grep "model name" /proc/cpuinfo |
Вывести информацию о процессоре(ах) |
• |
lspci -tv |
Вывести информацию о шине PCI |
• |
lsusb -tv |
Вывести информацию о шине USB |
recode (устаревшие iconv, dos2unix, unix2dos) |
• |
recode -l | less |
Вывести список возможных преобразований кодировок (на каждой строчке - альтернативные названия) |
|
recode windows-1252.. file_to_change.txt |
Из Windows "ansi" в локальную кодировку (автоматически преобразует CRLF) |
|
recode utf-8/CRLF.. file_to_change.txt |
Из Windows utf8 в локальную кодировку |
|
recode iso-8859-15..utf8 file_to_change.txt |
Latin9 (западноевропейская кодировка) в utf8 |
|
recode ../b64 < file.txt > file.b64 |
Кодирование в Base64 |
|
recode /qp.. < file.txt > file.qp |
Декодирование в формат Quoted printable |
|
recode ..HTML < file.txt > file.html |
Преобразование текста в HTML |
• |
recode -lf windows-1252 | grep euro |
Поиск по таблице символов |
• |
echo -n 0×80 | recode latin-9/x1..dump |
Показать, что код обозначает в наборе символов latin-9 |
• |
echo -n 0x20AC | recode ucs-2/x2..latin-9/x |
Показать код в кодировке latin-9 |
• |
echo -n 0x20AC | recode ucs-2/x2..utf-8/x |
Показать код в кодировке utf-8 |
Интерактивное |
• |
mc |
Мощный файловый менеджер, способный осуществлять также навигацию по rpm, tar, ftp, ssh, ... |
• |
screen |
Виртуальные терминалы с возможностью прерывания соединения, ... |
• |
links |
Текстовый веб-браузер |
• |
gnuplot |
Построение графиков, интерактивно / с помощью скриптов |
• |
octave |
Оболочка, подобная Matlab |