Список основных консольных команд Linux

Оригинал статьи

Список основных команд Linux. Все команды тестировались на Fedora и Ubuntu.

Команда Описание
apropos whatis Показать команды соответствующие строке. См. также threadsafe
man -t man | ps2pdf — > man.pdf Создать pdf версию страницы мануала (man)
which command Показать полный путь к файлу команды
time command Выполнить команду и отобразить время выполнения
time cat Запустить секундомер. Ctrl-d чтобы остановить его. См. также sw
nice info Запустить команду с низким приоритетом (”info” reader в данном случае)
renice 19 -p $$ Установить shell (скрипту) низкий приоритет. Используется для неинтерактивных задач.
Навигация по директориям
cd — Перейти в предыдущую директорию
cd Перейти в $HOME директорию
(cd dir && command) Перейти в директорию, выполнить комманду (command) и вернуться в текущую директорию
pushd . Положить текущую директорию в стек, чтобы позже вернуться к ней с помощью popd
alias l=’ls -l —color=auto’ Быстрое отображение содержимого директории
ls -lrt Список файлов по дате. См. также newest и find_mm_yyyy
ls /usr/bin | pr -T9 -W$COLUMNS Напечатать в 9 столбцов в ширину терминала
find -name ‘*.[ch]‘ | xargs grep -E ‘expr’ Искать ‘expr’ в текущей директории и в нижестоящих директориях. См. также findrepo
find -type f -print0 | xargs -r0 grep -F ‘example’ Поиск всех файлов по ‘example’ в текущей директории и ниже
find -maxdepth 1 -type f | xargs grep -F ‘example’ Поиск всех файлов по ‘example’ в текущей директории
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 Найти директории не доступные для всех (полезно для web сайтов)
locate -r ‘file[^/]*\.txt’ Искать в кешированном индексе по именам.
look reference Быстрый поиск (сортированный) словаря по префиксу
grep —color reference /usr/share/dict/words Подсвечивание мест где регулярное выражение появляется в словаре
Архивирование и сжатие
gpg -c file Зашифровать файл
gpg file.gpg Расшифровать файл
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 [email protected] ‘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 [email protected] ‘cd /where/to/ && tar -x -p’ Скопировать (с правами доступа) папку copy/ на удаленный компьютер remote:/where/to
dd bs=1M if=/dev/sda | gzip | ssh [email protected] ‘dd of=sda.gz’ Сделать резервную копию (сбекапить) жесткого диска и послать ее на удаленный компьютер
rsync (Эффективный сетевой копировщик файлов: Используйте опцию –dry-run для тестирования)
rsync -P rsync://rsync.server.com/path/to/file file Только отобразить различия. Делайте много раз чтобы проверить прошли ли нормально закачки
rsync —bwlimit=1000 fromfile tofile Скопировать локально с предельной скоростью. Это приятно для I/O
rsync -az -e ssh —delete ~/public_html/ remote.com:’~/public_html’ Зеркальный веб сайт (используется шифрование и дешифрование)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ Синхронизировать текушую папку с папкой на удаленном компьютере
ssh (Secure SHell)
ssh [email protected]$HOST command Запустить команду command на удаленном хосте $HOST от имени пользователя $USER
(команда по умолчанию = shell)
ssh -f -Y [email protected]$HOSTNAME xeyes Запустить GUI команду на удаленном хосте $HOST от имени пользователя $USER
scp -p -r [email protected]$HOST: file dir/ Скопировать папку dir/ с правами доступа в домашнию папку пользователя $USER на хосте $HOST
ssh -g -L 8080:localhost:80 [email protected]$HOST Перенаправить соединения к $HOSTNAME:8080 наружу к $HOST:80
ssh -R 1434:imap:143 [email protected]$HOST Перенаправить соединения от $HOST:1434 к внутр. imap:143
wget (многоцелевой инструмент для скачивания)
(cd cli && 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 непосредственная поддержка globbing
wget -q -O- http://www.pixelbeat.org/timeline.html | grep ‘a href’ | head Отображать вывод напрямую (на экран)
echo ‘wget url’ | at 01:00 Скачать url в 01:00 в текущую директорию
wget —limit-rate=20k url Сделать закачку с уменьшенной скоростью (ограничить скорость до 20 КB/s в этом примере)
wget -nv —spider —force-html -i bookmarks.html Проверить ссылки в файле
wget —mirror http://www.example.com/ Оперативно обновлять локальную копию сайта (удобно использовать с cron)
Сетевые команды (Обратите внимание, что команды ifconfig, route, mii-tool, nslookup устарели)
ethtool eth0 Отобразить статус сетевого устройства (интерфейса) eth0
ethtool —change eth0 autoneg off speed 100 duplex full Вручную установить скорость сетевого интерфейса (устройства)
iwconfig eth1 Отобразить статус беспроводного интерфейса (устройства) eth1
iwconfig eth1 rate 1Mb/s fixed Вручную установить скорость беспроводного интерфейса (устройства)
iwlist scan Список беспроводных сетей в радиусе действия
ip link show Список сетевых интерфейсов (устройств)
ip link set dev eth0 name wan Переименовать интерфейс (устройство) eth0 в wan
ip link set dev eth0 up Включить интерфейс eth0 (чтобы выключить — down)
ip addr show Список ip адресов интерфейсов
ip addr add 1.2.3.4/24 brd + dev eth0 Добавить (или удалить) ip адрес и маску (255.255.255.0)
ip route show Вывести таблицу маршрутизации
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мс латентность к устройству loopback (для тестирования)
tc qdisc del dev lo root Убрать латентность добавленную выше
host pixelbeat.org Поиск ДНС ip адреса по имени хоста или наоборот
hostname -i Поиск локального ip адреса (идентично host ‘hostname’)
whois pixelbeat.org Поиск whois информации по имени хоста или ip адресу
netstat -tupl Список интернет сервисов в системе
netstat -tup Список активных соединений к системе (от системы)
Сетевые команды связанные с windows (Обратите внимание, что samba — это пакет который предоставляет всю windows специфичную поддержку сети)
smbtree Найти windows компьютеры в сети. См. также findsmb
nmblookup -A 1.2.3.4 Найти windows (netbios) имя, ассоциируемое с ip адресом
smbclient -L windows_box Список shares на windows компьютере или samba сервере
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share Смонтировать windows share (папку с открытым доступом)
echo ‘message’ | smbclient -M windows_box Послать popup сообщение на windows комьютер (отключено по умолчанию в XP sp2)
Манипуляции с текстом (Обратите внимание, 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’ Заескейпить активные метасимволы оболочки двумя ковычками
seq 10 | sed «s/^/      /; s/ *\(.\{7,\}\)/\1/» Выровнять числа по правой границе
sed -n ’1000p;1000q Напечатать 1000-ную строку
sed -n ’10,20p;20q Напечатать строки с 10 по 20-ую
sed -n ‘s/.*<title>\(.*\)<\/title>.*/\1/ip;T;q Получить title из HTML страницы
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n Отсортировать IPV4 ip адреса
echo ‘Test’ | tr ‘[:lower:]‘ ‘[:upper:]‘ Перевести из одного регистра в другой
tr -dc ‘[:print:]‘ < /dev/urandom Отфильтровать не печатаемые символы
history | wc -l Посчитать число строк
Операции с множествами (Обратите внимание, что Вы можете  export LANG=C для скорости. Это также полагает отсутствие линий дупликатов в файле)
sort file1 file2 | uniq Объединение неотсортированных файлов
sort file1 file2 | uniq -d Пересечение неотсортированных файлов
sort file1 file1 file2 | uniq -u Разность неотсортированных файлов
sort file1 file2 | uniq -u Симметрическая разность неотсортированных файлов
join -t’\0′ -a1 -a2 file1 file2 Объединение отсортированных файлов
join -t’\0′ file1 file2 Пересечение отсортированных файлов
join -t’\0′ -v2 file1 file2 Разность отсортированных файлов
join -t’\0′ -v1 -v2 file1 file2 Симметрическая разность отсортированных файлов
Математические операции
echo ‘(1 + sqrt(5))/2′ | bc -l Простая математика (Вычисление числа φ). См. также bc
echo ‘pad=20; min=64; (100*10^6)/((pad+min)*8)’ | bc Более сложная (целая). Этот пример показывает максимум FastE packet rate
echo ‘pad=20; min=64; print (100E6)/((pad+min)*8)’ | python Питон занимается математическими вычислениями
echo ‘pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)’ | gnuplot -persist Напечатать FastE packet rate против packet size
echo ‘obase=16; ibase=10; 64206′ | bc Конвертация систем счисления (десятичную в шестнадцатиричную)
echo $((0x2dec)) Конвертация систем счисления (шестнадцатиричную в десятичную)
((арифметическое расширение shell-а))
units -t ’100m/9.58s’ ‘miles/hour’ Unit конвертация (метрической системы в имперскую)
units -t ’500GB’ ‘GiB’ Unit конвертация (SI в IEC префиксы)
units -t ’1 googol’ Поиск определения
seq 100 | (tr ‘\n’ +; echo 0) | bc Добавить столбец чисел. См. также add и funcpy
Календарь
cal -3 Отобразить календарь
cal 9 1752 Отобразить календарь для конкретного месяца года
date -d fri Какая дата у текущей пятницы. См. также day
[ $(date -d «tomorrow» +%d) = «01» ] || exit Завершить выполнение скрипта, если только сейчас не последний день месяца
date —date=’25 Dec’ +%A Какого числа будет рождество в текущем году
date —date=’@2147483647′ Перевести секунды прошедшие с epoch (1970-01-01 UTC) в дату
TZ=’:America/Los_Angeles’ date Сколько времени сейчас на Западном побережье США (используйте tzselect чтобы найти TZ)
echo «mail -s ‘get the train’ [email protected] < /dev/null» | at 17:45 Напоминать по Email
echo «DISPLAY=$DISPLAY xmessage cooker» | at «NOW + 30 minutes» Напоминать в Popup окне
Locales (локализация)
printf «%’d\n» 1234 Напечатать четырехзначное число сгруппированное соответственно локали
BLOCK_SIZE=\’1 ls -l Сделать чтобы ls группировала тысячи соответственно локали
echo «I live in `locale territory`» Получить информацию из базы данных локали
LANG=en_IE.utf8 locale int_prefix Искать информацию о локали для конкретной страны См. также ccodes
locale | cut -d= -f1 | xargs locale -kc | less Список полей, доступных в базе данных локали
Перекодирование (команды iconv, dos2unix, unix2dos устарели)
recode -l | less Отобразить доступные переходы (по 1 алиасу на каждой строке)
recode windows-1252.. file_to_change.txt Перевести Windows “ansi” в локальную (текущую) кодировку (auto делает CRFL перевод)
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 Раскодирование с кавычками
recode ..HTML < file.txt > file.html Перевести text в HTML
recode -lf windows-1252 | grep euro Поиск в таблице символов
echo -n 0×80 | recode latin-9/x1..dump Показать символ в кодировке latin9 по коду
echo -n 0x20AC | recode ucs-2/x2..latin-9/x Показать latin-9 encoding
echo -n 0x20AC | recode ucs-2/x2..utf-8/x Показать utf-8 encoding
CDs (операции с CD дисками)
gzip < /dev/cdrom > cdrom.iso.gz Сохранить копию CD с данными
mkisofs -V LABEL -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 Создать аудио диск (audio CD) из всех wav файлов,
находящихся в текущей директории (см. также cdrdao)
oggenc —tracknum=’track’ track.cdda.wav -o ‘track.ogg’ Создать ogg файл из wav файла
Дисковое пространство (См. также FSlint)
ls -lSr Список файлов, отсортированных по размеру (файл с наибольшим размером — последний)
du -s * | sort -k1,1rn | head Показать пользователей в текущей папке с наибольшим объемом используемых данных.
См. также dutop
df -h Показать свободное место на смонтированных файловых системах
df -i Показать свободные индексные дескрипторы на смонтированных файловых системах
fdisk -l Показать размеры разделов дисков и типы (запускается от root-а)
rpm -q -a —qf ‘%10{SIZE}\t%{NAME}\n’ | sort -k1,1n Список всех пакетов с размером дистрибутивов (размер — в Байтах)
dpkg-query -W -f=’${Installed-Size;10}\t${Package}\n’ | sort -k1,1n Список всех пакетов с размерами установки (размер — в килобайтах) для debian дистрибутивов
dd bs=1 seek=2TB if=/dev/null of=ext3.test Создать большой тестовый файл. См. также truncate
Мониторинг/отладка
tail -f /var/log/messages  Мониторинг сообщений в log файле
strace -c ls >/dev/null Сумма/профиль системных вызовов, сделанных командой
strace -f -e open ls >/dev/null Список системных вызовов, сделанных командой
ltrace -f -e getenv ls >/dev/null Список библиотечных вызовов, сделанных командой
lsof -p $$ Список путей, которые открывал процесс
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’ Список процессов с % использования процессора
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS Список процессов с используемой ими памятью (См. также ps_mem.py)
ps -C firefox-bin -L -o pid,tid,pcpu,state Список всех потоков для конкретного процесса
ps -p 1,2 Список информации о процессах с конкретными IDs (идентификаторами)
last reboot Показать историю ребутов системы
free -m Показать количество оставшейся оперативной памяти (-m отображает в мегабайтах)
watch -n.1 ‘cat /proc/interrupts’ Наблюдать последовательно за изменяющимися данными
Информация о системе (см. также sysinfo) (’#’ означает, что для запуска нужны права root-а)
uname -a Показать версию ядра и системную архитектуру
head -n1 /etc/issue Показать название и версию дистрибутива (операционной системы)
cat /proc/partitions Показать все разделы, зарегистрированные в системе
grep MemTotal /proc/meminfo Показать всю оперативную память, которую видит система
grep «model name» /proc/cpuinfo Показать информацию о процессоре(ах) (CPU)
lspci -tv Показать информацию о шине PCI
lsusb -tv Показать информацию о USB
mount | column -t Список смонтированных файловых систем в системе (херархический вывод)
# dmidecode -q | less Отобразить информацию о SMBIOS/DMI
# smartctl -A /dev/sda | grep Power_On_Hours Какой промежуток времени этот диск (система) был включен (работал)
# hdparm -i /dev/sda Показать информацию о диске sda
# hdparm -tT /dev/sda Протестировать скорость чтения на диске sda
# badblocks -s /dev/sda Протестировать на нечитаемые блоки диск sda
Интерактивность (см. также горячие клавиши linux)
readline Редактор строки, используемый bash, python, gnuplot, …
screen Виртуальные терминалы с возможностями открепления, …
mc Мощный файл менеджер, которые может просматривать rpm, tar, ftp, ssh, …
gnuplot Интерактивная (скриптовая) графика
links Текстовый веб браузер
Разное
alias hd=’od -Ax -tx1z -v’ Ручной 16-ричный дамп (пример использования: hd /proc/self/cmdline | less)
alias realpath=’readlink -f’ Канонический путь (пример использования: realpath ~/../$USER)
set | grep $USER Поиск в текущем  environment (окружении)
touch -c -t 0304050607 file Установить дату для файла (YYMMDDhhmm)
python -m SimpleHTTPServer Отобразить дерево текущего каталога по адресу http://$HOSTNAME:8000/