[ Страница назад | Страница вперед | Содержание | Индекс | Домой |
Юридическая информация |
Поиск ]
Руководство пользователя: Операционная система и устройства
Перед запуском команды оболочка C
выполняет поиск символов перенаправления в командной строке. Такие
символы означают, что необходимо перенаправить ввод или вывод.
Для перенаправления ввода и вывода
команды применяются следующие операторы:
< Файл
| Открывает в качестве стандартного ввода указанный Файл (перед
этим выполняется подстановка команд, переменных и имен файлов).
|
<<Слово
| В качестве стандартного устройства ввода будет применяться клавиатура до
тех пор, пока не будет введено указанное Слово. Для
параметра Слово подстановка переменных, имен файлов и команд не
выполняется. Каждая введенная строка сравнивается с параметром
Слово, а затем в строке выполняются все необходимые
подстановки. Если в переменной Слово не задан ограничивающий
символ (\, ", ' или `.) , то оболочка выполняет
подстановку переменных и команд в строках вводимого текста, при этом для
помещения в кавычки символов $ , \ и ` применяется символ \
. В командах, для которых выполняется подстановка, сохраняются все
пробелы, символы табуляции и символы новой строки, за исключением последнего
символа новой строки, который отбрасывается. Получившийся текст
записывается во временный файл без имени, который передается команде в
качестве стандартного ввода.
|
>Файл
>!Файл
>&Файл
>&!Файл
| Стандартный вывод будет связан с указанным Файлом. Если
Файл не существует, то он будет создан. Если Файл
существует, то все его содержимое удаляется. Если установлена
переменная оболочки noclobber, то в параметре Файл
должно быть задано имя нового файла, специального символьного файла или файла
вывода сообщений об ошибках. Это позволяет предотвратить случайное
повреждение файлов. Для подавления этой опции укажите конструкцию с
символом ! . Подстановки в параметре Файл выполняются так
же, как и для входных файлов <. Символ >& задает
перенаправление стандартного вывода и вывода сообщений об ошибках в указанный
Файл. В приведенном ниже примере показано, как перенаправить
стандартный вывод в файл /dev/tty, а вывод сообщений об ошибках - в
файл /dev/null. Для разделения стандартного вывода и вывода
сообщений об ошибках необходимо указать круглые скобки.
% (find / -name vi -print > /dev/tty) >& /dev/null
|
> >Файл
>
>!Файл
>
>&Файл
>
>&!Файл
| Стандартный вывод связывается с указанным Файлом, как и в
случае оператора >, однако вывод добавляется в конец
Файла. Если установлена переменная оболочки
noclobber, то в параметре Файл нужно задать имя
существующего файла или указать конструкцию с символом ! . Если файл не
существует, то действие этого оператора аналогично действию >.
|
Команде передаются переменные
среды, которые были установлены при запуске оболочки, с учетом заданного
перенаправления ввода/вывода. В отличие от многих других оболочек, у
команды из сценария оболочки по умолчанию нет доступа к командной строке, из
которой эта команда была вызвана. Вместо этого такие команды получают
исходные данные из стандартного устройства ввода оболочки. Для
просмотра внутренних данных воспользуйтесь способом <<. Такой
способ позволяет применять командные файлы оболочек в качестве элементов
конвейера и как самостоятельные команды. Обратите внимание, что если
команда выполняется в фоновом режиме, то ее стандартный ввод по умолчанию не
перенаправляется в файл /dev/null. Вместо этого стандартный
ввод по-прежнему связан с вводом с клавиатуры.
Для того чтобы перенаправить вывод
сообщений об ошибках и стандартный вывод в конвейере, нужно указать символы
|& , а не просто символ | .
В оболочке C предусмотрены
операторы, позволяющие управлять ходом выполнения командных файлов
(сценариев). В некоторых случаях эти операторы могут использоваться и в
командной строке. В число операторов оболочки С входят стандартные
операторы, присущие большинству языков программирования.
Для применения операторов
foreach, switch, while и if (в форме
if-then-else) необходимо задать все основные ключевые слова в
строке ввода в виде одной команды.
Если оболочка выполняет чтение в
цикле и полученный на одном из витков ввод не поддается синтаксическому
разбору, то он помещается во внутренний буфер, и оболочка читает данные на
следующем витке. Для выполнения такой последовательности действий за
каждым нераспознанным блоком ввода указывается оператор безусловного перехода
goto.
[ Страница назад | Страница вперед | Содержание | Индекс |
Домой |
Юридическая информация |
Поиск ]