3.4.7. Группировка команд

3.4.7. Группировка команд

Кроме конвейеров, команды можно соединять в списки. Простейший вид списка — несколько команд, разделенных точкой с запятой:

$ lpr myfile.txt ; lpq

Команды в таком списке выполняются последовательно: сначала будет выполнена команда постановки задания в очередь печати, а потом проверено состояние принтера. Оболочка ждет завершения каждой команды, чтобы отправить на выполнение следующую (синхронный режим).

В списки можно группировать не только одиночные команды, но и конвейеры:

$ ps -ef | head -n 1; ps -ef | grep httpd

UID    PID   PPID  С STIME TTY TIME     CMD

root   13565 1     0 13:11 ?   00:00:00 /usr/local/sbin/httpd

nobody 13566 13565 0 13:11 ?   00:00:00 /usr/local/sbin/httpd

nobody 13567 13565 0 13:11 ?   00:00:00 /usr/local/sbin/httpd

nobody 13642 13565 0 13:16 ?   00:00:00 /usr/local/sbin/httpd

Первый конвейер вырезает из списка процессов заголовок, а второй — информацию о демоне httpd.

Если требуется запустить команду на заднем плане и не ждать ее выполнения (асинхронный режим), то нужно завершить ее управляющим оператором &:

$ du --human-readable --total /home > diakusage.txt &

Команда du сообщает, сколько места на диске занято файлами в указанном каталоге. Обратите внимание на ключи: их имена предваряются не одним минусом, а двумя. Большинство команд поддерживает как короткие однобуквенные ключи, так и длинные — с осмысленными, легко запоминаемыми именами. Напоминаю, что список и значения ключей команды cmd можно получить, выполнив ее с ключом --help или --usage.

Конвейеры (или одиночные команды) в списке можно соединять управляющими операторами && и ||, получая «список И» или «список ИЛИ» соответственно:

cmd1 && cmd2 cmd3 || cmd4

Вторая команда в «списке И» будет выполнена только в случае успешного завершения первой. Типичный пример — создание каталога и переход в него:

$ mkdir mydir && cd mydir

Вторая команда в «списке ИЛИ» будет выполнена только в случае неуспешного завершения первой (возврата ею ненулевого значения):

$ my_command || echo "Команда my_command не найдена" | mail den

Вторая команда (конвейер) в этом примере формирует и посылает письмо с отчетом о неуспехе пользователю den.

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

$ ( date; free; who; ) > logfile

Список, взятый в круглые скобки, выполняется в дочерней оболочке, имеющей собственные локальные переменные и текущий каталог:

$ pwd; ( cd / tmp ; pwd ) ; pwd;

/home/den

/tmp

/home/den

$

Если нужно часто выполнять одну и ту же последовательность команд, можно оформить ее как функцию:

$ function morning_report {

> date;

> free;

> W;

> }

$ morning_report | mail root

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

Определенные вами переменные и функции действительны только для текущего сеанса работы в оболочке bash. Чтобы воспользоваться ими в следующем сеансе, запишите их в текстовый файл, а когда они понадобятся, загрузите этот файл в память командного интерпретатора встроенной командой source:

$ cat > foo

myvar="Моя переменная"

function myfun {

 echo $myvar

}

^D

$ source foo

$ myfun

Моя переменная

$

Команда source выполняет инструкции, содержащиеся в файле, в текущей оболочке в отличие от исполнения файла, содержащего сценарий: тот выполняется в дочерней оболочке, и определенные в ней переменные и функции для родительской оболочки невидимы. Чтобы заметить разницу, удалите переменную myvar и функцию myfun из памяти оболочки командой unset, сделайте файл foo исполняемым командой chmod (п.3.4.3) и исполните его. Убедитесь, что после его выполнения переменная myvar и функция myfun остались не определены.

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Похожие главы из других книг:

3.6. Группировка строк и столбцов

Из книги автора

3.6. Группировка строк и столбцов В стандарте HTML 4 появились новые элементы для группировки (не объединения, а именно группировки) строк и столбцов таблицы в группы с общими свойствами.Для группировки столбцов таблицы служат элементы COLGROUP и COL. Элемент COLGROUP создает


Группировка

Из книги автора

Группировка Для задания разным элементам документа одних и тех же свойств в CSS существует группировка. Селекторы, то есть элементы, можно сгруппировать в список, разделив запятыми.Приведу пример, в котором разным элементам задается одно и то же свойство:h1 { color: red }h2 { color: red


Группировка

Из книги автора

Группировка При наведении указателя мыши на правую границу любого заголовка столбца можно увидеть стрелку. Щелкнув на ней кнопкой мыши, вы развернете панель, содержащую настройки группировки и фильтрации (рис. 3.8). Рис. 3.8. Панель настроек группировки и фильтрацииЧтобы


10.5.3. Группировка

Из книги автора

10.5.3. Группировка В файле ftpgroups находятся описания групп (равносильны правам доступа), при создании которых можно использовать команды SITE GROUP и SITE GPASS. Это нестандартные директивы FTP, и мало кем из производителей поддерживаются, поэтому для пользователей работа с этими


Группировка по номеру столбца

Из книги автора

Группировка по номеру столбца Сервер Yaffil расширяет синтаксис инструкции group by. Допускается указывать номера столбцов для группировки, как в инструкции oreder by.Пример:select count(a), b from t group by


Группировка по встроенным функциям и UDF

Из книги автора

Группировка по встроенным функциям и UDF Разрешена группировка и использование встроенных функций и UDF.Пример:select sum(vent) from sales group by extract(year from sale


Группировка объектов

Из книги автора

Группировка объектов При работе часто приходится использовать большое количество объектов и на определенной стадии мы начинаем оперировать не отдельными объектами, а их группами, объединяя по нескольку объектов в один.К примеру, создав колонтитул с использованием


Группировка операторов

Из книги автора

Группировка операторов Операторы можно группировать, заключая их в круглые скобки.


Генерирование SQL-команд с помощью типов построителя команд

Из книги автора

Генерирование SQL-команд с помощью типов построителя команд Вы должны согласиться с тем, что для работы с адаптерами данных может потребоваться ввод довольно большого объема программного кода, а также создание всех четырех объектов команд и соответствующей строки


Группировка

Из книги автора

Группировка Чтобы можно было применять некоторые операции к нескольким объектам, их нужно выделить, создав временную группу объектов: изменения одного объекта отражаются на всех остальных объектах, входящих в группу. Если выделение снять, то группировка исчезнет.Однако


1.1. Группировка данных в реестре

Из книги автора

1.1. Группировка данных в реестре Все параметры системного реестра WindowsVis ta в зависимости от их функционального назначения сгруппированы в пяти основных разделах, называемых корневыми.Кратко остановимся на каждом из них (надо отметить, что название каждого раздела


Группировка записей

Из книги автора

Группировка записей Приведенный выше отчет с его структурой является также одной из форм организации записей. Однако группировать данные можно и более привычным способом, то есть с помощью мастера отчетов. Его запуск и начало работы осуществляются почти так же, как


Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов

Из книги автора

Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов Переадресация (перенаправление) команд – одна из наиболее полезных возможностей протокола SSH. Она вытекает из его основополагающих принципов построения, когда


Группировка фрагментов

Из книги автора

Группировка фрагментов Выше мы уже упоминали о группировке. Выясним теперь, что это такое.Группировка позволяет временно объединить несколько разрозненных фрагментов изображения в единое целое — группу фрагментов. После выполнения группировки мы можем работать с


Группировка

Из книги автора

Группировка При наведении указателя мыши на заголовок любого столбца в его правой части появится стрелка ?, щелчок кнопкой мыши на которой открывает меню выбора дополнительных способов отображения объектов (рис. 2.40).Для применения режима группировки щелкните кнопкой