береженого кольт бережет
береженого кольт бережет

Полезные приёмы работы в командной строке Linux

Каждый, кто пользуется командной строкой Linux, встречался со списками полезных советов. Каждый знает, что повседневные дела вполне можно выполнять эффективнее, да только вот одно лишь это знание, не подкреплённое практикой, никому не приносит пользы.
Как выглядят типичные трудовые будни системного администратора, который сидит на Linux? Если абстрагироваться от всего, кроме набираемых на клавиатуре команд, то окажется, что команды эти постоянно повторяются. Всё выходит на уровень автоматизма. И, если даже в работе есть что улучшать, привычка противится новому. Как результат, немало времени уходит на то, чтобы делать так, как привычнее, а не так, как быстрее, и, после небольшого периода привыкания – удобнее. Помнить об этом, сознательно вводить в собственную практику новые полезные мелочи – значит профессионально расти и развиваться, значит – экономить время, которое можно много на что потратить.
Перед вами – небольшой список полезных приёмов работы с командной строкой Linux. С некоторыми из них вы, возможно, уже знакомы, но успели их позабыть. А кое-что вполне может оказаться приятной находкой даже для знатоков. Хочется надеяться, что некоторые из них будут вам полезны и превратятся из «списка» в живые команды, которыми вы будете пользоваться каждый день.

Вывод результатов работы команд в виде таблицы

Иногда вывод результатов работы команд выглядит как мешанина из беспорядочных строк. Найти то, что надо, в таких данных можно, но работать с ними неудобно. Например – что-то подобное можно получить в ответ на команду mount. Хорошо бы то же самое вывести в виде таблицы. И это не только возможно, но ещё и очень просто:

mount | column –t

По умолчанию команда формирует табличное представление, ориентируясь на пробелы между словами. А что, если в качестве разделителей используются другие символы, вроде двоеточий? Например – в выводе cat /etc/passwd?

Упорядочить можно и такие данные – достаточно указать символ-разделитель с параметром –s. Например, ниже приведена команда для символа «:».

cat /etc/passwd | column -t –s:

Многократный повтор команды до её успешного завершения

Если вы погуглите на эту тему, то обнаружите, что многие задают вопрос о том, как повторять команду до тех пор, пока она не будет успешно выполнена. Например, такое может быть полезным при пинге сервера до тех пор, пока он не откликнется, при проверке выгрузки файлов, или при опросе некоего URL до тех пор, пока он не окажется доступен.

Решить подобную задачу поможет цикл while true. Выглядит всё это так:

В этом примере конструкция >/dev/null 2>&1 перенаправляет вывод программы в /dev/null, включая и Standard Error, и Standard Out.

Вероятнее всего, это – один из самых полезных приёмов работы с командной строкой Linux.

Сортировка процессов по используемой памяти

Тут всё просто:

ps aux | sort -nk 4

Сортировка процессов по использованию ресурсов CPU

Сортировка процессов по использованию CPU делается так:

ps aux | sort -nk 3


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

Одновременный просмотр нескольких лог-файлов

Для просмотра лог-файлов вполне подходит команда tail, но иногда может понадобиться одновременная работа с несколькими подобными файлами. Для решения этой задачи подойдёт консольный инструмент multitail, который поддерживает выделение текста, фильтрацию и многие другие полезные возможности.

Установить эту утилиту, если вы её у себя не найдёте, можно командой apt-get install multitail.

Возврат к предыдущей директории

Для того, чтобы вернуться к предыдущей директории, просто наберите cd –.

Мониторинг с регулярными интервалами

Использование утилиты watch (например, watch df –h) поможет организовать наблюдение за выводом любой команды. Например, можно наблюдать за объёмом свободного пространства, и за тем, как он меняется.

Пожалуй, вы сами сможете найти подходящие сценарии для использования этой команды.

Продолжение выполнения программы после окончания сессии

Когда вы запускаете любую программу в фоне и закрываете консоль, программа тоже завершит работу. А что, если надо, чтобы программа работала и после закрытия оболочки?

Для того, чтобы этого добиться, можно воспользоваться командой nohup, название которой расшифровывается как «no hang-up». Выглядит это так:

nohup wget site.com/file.zip

Пожалуй, эта команда – одна из тех, о которой забывают чаще всего, открывая по несколько окон терминала только ради исполняющихся в них команд.

В примере, показанном на рисунке выше, в текущей директории будет создан файл nohup.out, содержащий вывод команды:

Полезная штука, согласны?

Автоматический ответ yes или no

Предположим, вы хотите автоматизировать процесс, который требует от пользователя постоянно отвечать yes. Сделать это можно, используя команду yes:

yes | apt-get update

Возможно, вместо этого вы решите автоматизировать отрицательные ответы. Тут поможет такая конструкция:

yes no | command

Создание файла заданного размера

Создавать файлы заданного размера можно, используя команду dd:

dd if=/dev/zero of=out.txt bs=1M count=10

Вышеприведённая команда создаст файл размером 10 Мб, заполненный нулями.

Выполнение последней команды с root-привилегиями

Иногда можно забыть ввести sudo перед командой, которой нужны root-привилегии. Вводить всё заново нет нужды – достаточно воспользоваться такой командой:

sudo !!

Создание протокола терминальной сессии

Для того, чтобы записать в файл всё, что было выведено в окне терминала, можно воспользоваться командой script.

После выхода из сессии протокол будет записан в файл typescript.

Замена пробелов на знаки табуляции

Вот команда, которая позволяет заменить пробелы на знаки табуляции:

cat geeks.txt | tr ':[space]:' '\t' > out.txt

На самом деле, она универсальна и умеет работать с любыми символами.

Замена строчных букв на прописные

А вот – пример вышеописанной команды для замены строчных букв в файле с текстом на прописные:

cat myfile | tr a-z A-Z > output.txt

Автоматическое формирование списка аргументов для команд: xargs

Утилита xargs, пожалуй, достойна звания одной из самых полезных возможностей командной строки Linux. Её можно использовать для передачи вывода некоей команды в качестве аргумента для другой. Например, вот как можно выполнить поиск .png-файлов и сжать их, или сделать с ними что-нибудь ещё:

find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz

Или, возможно, у вас имеется файл со списком URL, и вы хотите загрузить ресурсы по этим адресам, или ещё как-то их обработать:

cat urls.txt | xargs wget

Тут надо учитывать, что вывод первой команды передаётся в качестве аргумента в конце команды xargs. Если при конструировании второй команды надо явно указать место, куда должны попасть выходные данные первой, достаточно воспользоваться парой фигурных скобок, {} и параметром –i для замены аргумента в нужном месте:

ls /etc/*.conf | xargs -i cp {} /home/likegeeks/Desktop/out

Итоги

Полезности для командной строки Linux – тема невероятно обширная. Поэтому любой список, подобный нашему, можно пополнять очень и очень долго. Например, много неожиданного скрыто в командах awk и sed. Пожалуй, главное – чтобы такие вот списки шли в дело.