команда > файлНаправляет стандартный поток вывода в новый файл
команда 1> файлНаправляет стандартный поток вывода в указанный файл
команда >> файлНаправляет стандартный поток вывода в указанный файл (режим присоединения)
команда > файл 2>&1Направляет стандартные потоки вывода и ошибок в указанный файл
команда 2> файлНаправляет стандартный поток ошибок в указанный файл
команда 2» файлНаправляет стандартный поток ошибок в указанный файл (режим присоединения)
команда >> файл 2>&1Направляет стандартные потоки вывода и ошибок в указанный файл (режим присоединения)
команда < файл1 > файл2Получает входные данные из первого файла и направляет выходные данные во второй файл
команда < файлВ качестве стандартного входного потока получает данные из указанного файла
команда << разделительПолучает данные из стандартного потока ввода до тех пор, пока не встретится разделитель
команда <&mВ качестве стандартного входного потока получает данные из файла с дескриптором m
команда > &mНаправляет стандартный поток вывода в файл с дескриптором m
<p><emphasis><strong>5.7.1. Переадресация стандартного потока вывода</strong></emphasis></p>

Рассмотрим, как осуществляется переадресация стандартного потока вывода. В следующей командной строке из файла /etc/passwd извлекаются имена пользователей, известных в системе, полученный список сортируется по алфавиту, а результаты направляются в файл sort.out.

$ cat /etc/passwd | awk -F: '{print $1}' | sort > sort.out

Опция -f программы awk свидетельствует о том, что указанный после нее символ двоеточия является разделителем полей в файле /etc/passwd.

В один и тот же файл в режиме присоединения можно направлять результаты работы сразу нескольких команд:

$ ls -l | grep ^d >> files.out

$ 1s account* >> files.out

В первой строке в файл files.out помещается список каталогов, а во второй -cписок файлов, имена которых начинаются со строки "account".

Для создания пустого файла нулевой длины выполните следующую команду:

$ > myfile

<p><emphasis><strong>5.7.2. Переадресация стандартного потока ввода</strong></emphasis></p>

Рассмотрим несколько примеров переадресации стандартного потока ввода. Чтобы из командной строки отправить пользователю электронное сообщение, которое находится в файле, следует направить файл программе mail. Посредством следующей команды пользователь louise получит сообщение, которое содержится в файле contents.txt.

$ mail louise < contents.txt

Переадресация вида команда << разделитель называется конструкцией "документ здесь". Более подробно мы поговорим о ней позже. Пока же рассмотрим общие принципы ее функционирования. Встречая в командной строке оператор «, интерпретатор shell воспринимает все данные, вводимые с клавиатуры, как входной поток, пока в отдельной строке не будет введено слово–разделитель, указанное в командной строке после оператора. Разделителем может служить любое слово. Вот как, например, можно создать файл в режиме командной строки:

$ cat >> myfile << Пока

> Привет! Я работая за терминалом $TERM

и мое имя $LOGNAME.

Пока!

Пока

$ cat myfile

Привет! Я работаю за терминалом vt100

и мое имя dave.

Пока!

Признаком окончания ввода является слово "Пока" в отдельной строке, за которым нет никаких других символов. Вот почему предпоследняя строка не послужила командой окончания: после слова "Пока" стоит восклицательный знак.

Перейти на страницу:

Похожие книги