Программирование в стандарте POSIX

cinnamon while pregnant

Перенаправление ввода/вывода - часть 2


Для этого в описанных выше конструкциях в качестве слова следует употребить связку &номер_дескриптора:

<&номер_дескриптора >&номер_дескриптора

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

... 2>&1

Если в качестве номера_дескриптора указан минус ('-'), соответствующий файл (стандартный ввод, вывод или явно заданный своим дескриптором файл) закрывается.

Shell позволяет открыть файл одновременно на чтение и запись при помощи конструкции

<>слово

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

Приведем два примера. Пусть нужно измерить время выполнения некоторой команды, направив ее результаты в файл cmd.res, а данные о времени - в файл cmd.time. К цели ведет строка, приведенная в листинге 2.24:

time команда >cmd.res 2>cmd.time

Листинг 2.24. Пример перенаправления стандартного вывода и стандартного протокола. (html, txt)

Второй пример. Рассмотрим цикл, описанный в листинге 2.25:

i=0 while [ $i -lt 40 ] do > lost+found/g$i i=$(($i+1)) done rm lost+found/*

Листинг 2.25. Пример перенаправления стандартного вывода пустой команды. (html, txt)

С его помощью создается 40 файлов в каталоге lost+found, которые затем удаляются. Отметим, что перенаправляется стандартный вывод пустой команды, а в результате создается пустой файл.

(Поясним смысл приведенного фрагмента. При проверке и коррекции файловой системы утилитой fsck в каталог /lost+found помещаются непустые файлы, на которые нет ссылок. Сложность в том, что пока утилита fsck работает, ни один файл не должен расширяться, т. е. в каталоге /lost+found должны быть заранее заготовленные пустые места.)

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

<<слово вставка слово

и

<<-слово вставка слово

Их можно считать разновидностями перенаправления ввода.


Начало  Назад  Вперед