Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС лабы / ОС - Лабораторная работа 3.doc
Скачиваний:
77
Добавлен:
01.06.2015
Размер:
469.5 Кб
Скачать
      1. Параметры

Параметры команды – это произвольные слова, т.е. последовательности символов, разделенные пробелами или табуляциями. Строка в кавычках также считается одним словом, даже если она содержит пробелы. Смысл параметров определяется форматом конкретной команды. Чаще всего используются два типа параметров: во-первых, имена обрабатываемых файлов и каталогов, и во-вторых, ключи (опции). Имя может содержать полный путь к файлу или каталогу, при этом имена вложенных каталогов разделяются символом /. Если путь не задан, подразумевается текущий каталог. Ключи позволяют модифицировать действие команды или формат данных. Как правило, ключ начинается с символа -, за которым обычно следует одна буква. Допускается совместное задание нескольких ключей, т.е., например, запись-abcравносильна трем ключам-a -b -c.

В записи имен и ключей учитывается регистр букв (прописные отличаются от строчных).

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

      1. Составные команды

Составная команда состоит из простых команд, соединенных в виде конвейера или списка.

Конвейерсостоит из нескольких команд, разделенных знаками|. Для выполнения конвейера шелл запускает одновременно работающие процессы для каждой команды, при этом стандартный вывод каждой команды перенаправляется на стандартный ввод следующей. Код завершения конвейера вырабатывается только после завершения всех процессов, и он равен коду завершения последней по порядку команды конвейера. Если в начале конвейера записан знак!, код завершения инвертируется (0 заменяется на 1, остальные значения заменяются на 0).

Далее для краткости под словом «команда» будем понимать простую команду или конвейер.

Перед командой может стоять ключевое слово «time –p». В этом случае после выполнения команды система выдает на стандартный вывод ошибок данные о затраченном времени: полное времяreal(по часам, от запуска до завершения), процессорное время в обычном режиме (user) и в системном режиме (system). Если ключ–pне указан, данные выдаются в более сложном, настраиваемом формате.

Списоксостоит из нескольких команд, разделенных знаками;,&,&&или||. В конце списка может стоять необязательный знак;,&или конец строки.

Если две команды разделены знаком ;, то они выполняются последовательно: следующая команда запускается только после завершения предыдущей. Код завершения списка команд будет равен коду завершения последней команды.

Смысл знака &будет рассмотрен позднее.

Если команды в списке разделены знаком &&, то следующая будет выполняться только в том случае, если код завершения предыдущей равен 0 (нормальное завершение). Напротив, знак||означает, что следующая команда будет выполняться только в том случае, если код завершения предыдущей не равен 0 (завершение с ошибкой).

При разборе шеллом командной строки приоритет операций &&и||выше, чем у&и;, а приоритет&выше, чем;.

Для изменения порядка обработки можно заключать часть списка команд в скобки. Можно использовать два вида скобок:

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

  • Фигурные скобки: { команды;}. В этом случае список команд выполняется текущим шеллом. Наличие скобок влияет только на порядок обработки разделителей|,;,&,&&и др. Пробел после открывающей фигурной скобки и ;перед закрывающей скобкой обязательны для избежания синтаксической неоднозначности.