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

Материал из Википедии - свободной энциклопедии.

Вернутся в раздел советов


На странице представлены различные трюки, которые вы можете применять в консоли Linux.

Содержание

Общие команды

  • поиск команды Linux, ее описания и номера секции man страниц
apropos word
  • закодировать файл file с помощью GnuPG
gpg -c file
  • раскодировать файл file
gpg file.gpg
  • быстрый поиск по словарю слов, начинающихся с word
look word
  • подсветить слово word в файле /somefile
grep --color word /somefile
  • запустить command с низким приоритетом
nice command
  • назначить низший приоритет текущему шеллу (и всем потомкам). Может быть полезно, если вашу систему сильно замедляет установка нового пакета (emerge).
renice 19 -p $$
  • скачать список новых страничек с нашего сайта в 01:00 в текущую директорию
echo "wget http://ru.gentoo-wiki.com/Special:Newpages" | at 01:00
  • послать пустое письмо с заголовком 'got the r00t?'на bugs@microsoft.com
echo "mail -s 'got the r00t?' bugs@microsoft.com < /dev/null" | at 17:45
  • напечатать 1234 в соответствии с настройками локали (в России обычно 1.234)
printf "%'d\n" 1234
  • запускать просмотр прерываний каждую секунду
watch -n1 "cat /proc/interrupts"
  • посмотреть, сколько времени занимает выполнение команды
time command
  • удобный алиас для вывода дампа
alias hd='od -Ax -tx1z -v'
  • полный путь к команде command
which command
  • вывести в 9 колонок по ширине терминала
ls | pr -T9 -W$COLUMNS
  • установить время изменения для файла file (в формате YYMMDDhhmm)
touch -c -t 0304050607 file
  • показать иерархию запущенных процессов
pstree -p
  • показать процессы, использующие файл /dir/file (чаще всего использую нечто вроде 'lsof /mnt/cdrom'). Не забудьте сделать 'emerge -n lsof'
lsof /dir/file

Ввод-вывод

  • объединить stderr и stdout
gcc file.c 2>&1 | less

Навигация по директориям.

  • вернуться в предыдущую директорию (не путать с 'cd ..')
cd -
  • вернуться в домашнюю директорию
cd
  • перейти в директорию dir, запустить command и автоматически вернуться назад
(cd dir command)
  • добавить текущую директорию в стек, чтобы потом можно было сделать
popd и вернуться к ней
pushd .

Дисковое пространство

  • показать список файлов с информацией о каждом файле (-l), отсортировав список по убыванию размера (-S) и перевернуть список (-r). Получим сортировку по возрастанию.
ls -lSr
  • показать, сколько места на диске занимает файл file и директория dir
du -sh file dir
  • показать свободное место на примонтированных ресурсах
df -h
  • то же самое но в инодах
df -i
  • показать геометрию размещения разделов жесткого диска (нужны права root)
fdisk -l

Работа с CD

  • создать iso-образ диска и заархивировать его
dd bs=1M if=/dev/cdrom | gzip > cdrom.iso.gz
  • создать iso-образ из директории dir
mkisofs -r dir | gzip > cdrom.iso.gz
  • смонтировать cdrom.iso в /mnt/dir (для просмотра и правки)
mount -o loop cdrom.iso /mnt/dir
  • записать архивированный образ на диск
gzip -dc cdrom.iso.gz | cdrecord dev=0,0,0 -
  • рипнуть дорожки с Audio-CD в текущую директорию (в формате .wav)
cdparanoia -B
  • создать Audio-CD из всех .wav файлов в текущей директории
cdrecord dev=0,0,0 -audio *.wav
  • конвертировать файл track.cdda.wav формат .ogg
oggenc --tracknum="track" track.cdda.wav -o "track.ogg"

Работа с архивами

  • создать архив директории dir
tar c dir/ | bzip2 > dir.tar.bz2


tar -cjf dir.tar.bz2 dir
  • извлечь архив в директорию /to/dir (без '-C /to/dir' в текущую директорию)
bzip2 -dc dir.tar.bz2 | tar x -С /to/dir


tar -xjf dir.tar.bz2 -C /to/dir
  • создать архив всех .png файлов в директории dir/
find dir/ -name "*.png" | xargs tar rf dir.tar; bzip2 dir.tar
  • скопировать (с сохранением прав доступа!) директорию /dir/to/copy/ в /where/to/
( tar cf - /dir/to/copy ) | ( cd /where/to/ && tar xf - )
  • скопировать (с сохранением прав доступа!) содержимое директории /dir/to/copy в /where/to/
( cd /dir/to/copy && tar cf - . ) | ( cd /where/to/ && tar xf - )
  • скопировать (с сохранением прав доступа!) директорию /dir/to/copy/ в директорию /where/to/ на удаленной машине
( tar cf - /dir/to/copy ) | gzip | ssh user@remote 'cd /where/to/ && gzip -dc | tar xf -'
  • создать и сохранить бэкап жесткого диска на удаленной машине
dd bs=1M if=/dev/hda | gzip | ssh user@remote 'dd of=hda.gz'

Работа с файлами

  • удобный листинг по команде l
alias l='ls -l --color=auto'
  • вывести листинг с упорядочиванием по дате
ls -lrt
  • найти в текущей директории (и ниже) .c и .h файлы содержащие строку "search string"
find -name "*.[ch]" | xargs grep -E "search string"
  • искать строку "search string" только в обычных файлах
find -type f | xargs grep -E "search string"
  • искать строку "search string" только в текущей директории (не спускаться ниже)
find -type f -maxdepth 1 | xargs grep -E "search string"
  • найти файл в базе данных программы slocate. Замечание: данное регулярное выражение эквивалентно маске *file*.txt
locate -r 'file[^/]*\.txt'

Работа с календарем

  • вывести на экран календарь на текущий, предыдущий и следующий месяцы
cal -3
  • на какой день недели выпал в этом году день рождения Linux?
date --date='25 Aug' +%A
  • конвертировать в дату (в соответствии с локалью) - 130204800 секунд, прошедшие с начала эпохи Unix
date --date '1970-01-01 UTC 130204800 seconds'
  • Сколько сейчас времени на западном побережьи США (используйте
tzselect чтобы узнать параметр для TZ)
TZ="America/Los_Angeles" date

Работа с сетью

(Предварительно сделать emerge на net-tools, sys-apps/iproute2, net-dns/bind-tools)
  • показать сетевые интерфейсы
ip link show
  • показать статус сетевых интерфейсов
ethtool interface или
/sbin/ifconfig
  • переименовать eth0 в wan
ip link set dev eth0 name wan
  • добавить ip 1.2.3.4 с маской 255.255.255.0 на eth0
ip addr add 1.2.3.4/24 brd + dev eth0
  • поднять интерфейс
ip link set dev interface up
  • опустить интерфейс
ip link set dev interface down
  • сделать шлюзом по умолчанию 1.2.3.254
ip route add default via 1.2.3.254
  • показать ip адрес для name
host name
  • показать прослушиваемые порты в системе (и кто их слушает)
netstat -lp --inet
  • показать активные соединения
netstat -p --inet

Математика

  • простое вычисление
echo "(321-123)/123" | bc -l
  • простое целочисленное вычисление с использование bash
echo "$(( (51+123)/2 ))"
  • использование python для научных вычислений
echo "print (10E3-123)/123" | python
  • приведение систем счисления (в данном случае, десятичной к шестнадцатеричной)
echo "obase=16;ibase=10;123" | bc
  • Более сложное вычисление - максимальная скорость передачи (в пакетах в секунду) в Fast Ethernet сети (100Mb)
echo "framing=20; minsize=64; (100*10^6)/((framing+minsize)*8)" | bc
  • А здесь мы строим график зависимости скорости передачи от размера пакета всё в той же 100-мегабитной сети.
echo "framing=20; plot [64:1518] (100*10**6)/((framing+x)*8)" | gnuplot -persist

Разное

  • показать последние доступные версии ядра Linux (предварительно сделайте emerge -n netkit-fingerd)
finger @kernel.org
Личные инструменты
advertisement