Секреты командной строки
Материал из Википедии - свободной энциклопедии.
- Вернутся в раздел советов
На странице представлены различные трюки, которые вы можете применять в консоли 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