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 остались не определены.

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

Следующая глава >

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

Группировка

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

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


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

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович

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


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

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

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


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

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

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


Группировка

Из книги Windows Vista автора Вавилов Сергей

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


Группировка

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

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


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

Из книги Adobe InDesign CS3 автора Завгородний Владимир

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


Группировка

Из книги Технология XSLT автора Валиков Алексей Николаевич


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

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

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


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

Из книги Access 2002: Самоучитель автора Дубнов Павел Юрьевич

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


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

Из книги Защита от хакеров корпоративных сетей автора Автор неизвестен

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


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

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

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


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

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

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


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

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

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


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

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

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


Группировка

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

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