19.7.1. Каналы и списки
19.7.1. Каналы и списки
Материал этого и следующего пункта дополняет гл. 5, в которой рассматривалось перенаправление ввода/вывода. Поэтому я не буду подробно описывать сам механизм этих процессов, а ограничусь лишь несколькими примерами, чтобы напомнить вам гл. 5.
С помощью каналов вы можете перенаправить стандартный вывод одной программы на стандартный ввод другой. Например:
cat /var/log/secure | less
ps –ax | grep "$UID" | less
В первом случае стандартный вывод команды cat (содержимое файла /var/log/secure) перенаправляется на стандартный ввод программы less, которая обеспечивает поэкранный вывод информации. Вторая строка выводит список всех процессов, принадлежащих данному пользователю. Первая команда ps-ax выводит список всех запущенных в системе процессов, вторая (grep "$UID") ищет фрагмент текста, содержащий идентификатор пользователя (UID) и выводит результат на стандартный вывод, то есть на стандартный ввод команды less. $UID является переменной окружения, которая содержит идентификатор пользователя. О переменных окружения поговорим немного позже.
Интерпретатор позволяет указывать списки команд в командной строке. Например:
lpr file.txt; lpq
При этом сначала выполняется команда постановки задания в очередь печати, а потом проверяется состояние принтера. Теперь более сложный пример:
ps –ax | head –n 1; ps –ax | grep httpd
Сначала выполняется команда ps для печати заголовка таблицы, а потом — для вывода информации о демоне httpd.
Можно использовать операции конъюнкции и дизъюнкции, например:
command1 && comand2
command3 || command4
Команда command1 будет выполнена в случае успешного завершения команды command1 (возвратный код равен 0). Команда command4 будет выполнена, если код возврата команды command3 не равен 0. Самый простой пример — создание и изменение каталога:
mkdir mydir && cd mydir
Обычно интерпретатор bash выполняет команды в синхронном режиме, то есть после запуска программы ожидает ее завершения. Однако можно запустить программу и в асинхронном режиме, то есть без ожидания ее завершения. Для этого нужно использовать символ «&» в конце команды, например:
program &
Данный текст является ознакомительным фрагментом.