русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Порожденный shell – оператор круглые скобки ( )


Дата добавления: 2014-11-28; просмотров: 1551; Нарушение авторских прав


Круглые скобки (), кроме выполнения функции группировки, выполняют и функцию вызова нового экземпляра интерпретатора shell.

Например,

$ (cat file1;echo .bp;cat file2)|nroff

Эта командная строка позволяет поставить между именами двух файлов, подлежащих форматированию, оператор конца страницы .bp программы nroff.

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

$ (nroff –ms file2;nroff –ms file2) &

Например,

$ wc names* ; who | wc

123 6773 488 names

223 1090 4560 names.2

2 10 46

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

$ (wc names* ; who) | wc

983 7140 36545

Эти две команды будут выполняться как высокоприоритетные (одна за другой), но их вывод будет комбинироваться.

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

$ (sleep 3600;echo Выключи телевизор!) &

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

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

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

$ pwd

/export/home/user1

$ (cd /export/home /user1/doc ; sort file1 > file.out) &

$ pwd

/export/home/user1

Файл file.out будет создан в каталоге /export/home/user1/doc.

3.5.2. Оператор списка – фигурные скобки {}

Известно, что выходные данные последовательности команд можно объединять при помощи порожденных интерпретаторов shell. Это значит, что вместо последовательности команд:



$ date > log

$ who >> log

$ ls >> log

посредством скобок запускается порожденный интерпретатор shell:

$ (date

> who

> ls) > log

И только однажды выходные данные переадресовываются в файл log. Однако порожденный интерпретатор shell является дополнительным процессом, и на его запуск в загруженной системе тратиться какое–то время. Если все, что нужно сделать, – это переадресовать вывод (или ввод) набора команд, используйте оператор списка – фигурные скобки {}.

$ { date

> who

> ls

> } > log

Обратите внимание на пробелы и дополнительный символ возврата каретки в конце списка. Каждая команда в списке должна быть отделена от других. Можно ввести следующее:

$ { date; who; ls; } > log

Заметьте: после каждой команды стоит точка с запятой.

Между операторами запуска порожденного интерпретатора shell – () и операторами списка – {} есть следующие различия:

- в порожденном интерпретаторе shell команда cd не изменяет текущий каталог родительского интерпретатора, а оператор списка – изменяет;

- набор переменных порожденного интерпретатора shell не передается родительскому интерпретатору, а переменные из списка – передаются.

Рассмотрим примеры, сочетающие различные способы группировки.

Если введена командная строка

$ k1 && k2; k3

где k1, k2 и k3 – какие–то команды, то "k2" будет выполнена только при успешном завершении "k1"; после любого из исходов обработки "k2" (т.е. "k2" будет выполнена, либо пропущена) будет выполнена "k3".

$ k1 && {k2; k3}

Здесь обе команды ("k2" и "k3") будут выполнены только при успешном завершении "k1".

$ {k1; k2} &

В фоновом режиме будет выполняться последовательность команд "k1" и "k2".

Контрольные вопросы

1. Перечислите позиционные переменные?

2. Что такое кода завершения процесса?

3. Какие значения может принимать код завершения?

4. Какие утилиты вырабатывают только код завершения?

5. Перечислите основные приемы композиции команд?

 




<== предыдущая лекция | следующая лекция ==>
Композиции команд | Условия проверки файлов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.35 сек.