Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

Дескриптор

Стандартный поток ввода (stdin)

0

Стандартный поток вывода (stdout) Стандартный поток ошибок (stderr)

1

2

В действительности создается 12 открытых файлов, но, как видно из таблицы, файлы с дескрипторами 0,1 и 2 резервируются для стандартных потоков ввода, вывода и ошибок. Пользователи могут также работать с файлами, имеющими дескрипторы от 3 до 9.

5.6.1. Стандартный поток ввода

Файл стандартного потока ввода (stdin) имеет дескриптор 0. Из этого файла процессы извлекают свои входные данные. По умолчанию входной поток ассоциирован с клавиатурой (устройство /dev/tty), но чаще всего он поступает по каналу от других процессов или из обычного файла.

5.6.2. Стандартный поток вывода

Файл стандартного потока вывода (stdout) имеет дескриптор 1. В этот файл записываются все выходные данные процесса. По умолчанию данные выводятся на экран терминала (устройство /dev/tty), но их можно также перенаправить в файл или послать по каналу другому процессу.

5.6.3. Стандартный поток ошибок

Файл стандартного потока ошибок (stderr) имеет дескриптор 2. В этот файл записываются сообщения об ошибках, возникающих в ходе выполнения команды. По умолчанию сообщения об ошибках выводятся на экран терминала (устройство /dev/tty), но их также можно перенаправить в файл. Зачем же для регистрации ошибок выделять специальный файл? Дело в том, что это очень удобный способ выделения из результатов работы команды собственно выходных данных, а также хорошая возможность эффективно организовать ведение различного рода журнальных файлов.

5.7. Файловый ввод–вывод

При вызове команд можно указывать, откуда следует принимать входные данные и куда необходимо направлять выходные данные, а также сообщения об ошибках. По умолчанию, если не указано иное, подразумевается работа с терминалом: данные вводятся с клавиатуры и выводятся на экран. Но интерпретатор shell располагает механизмом переадресации, позволяющим ассоциировать стандартные потоки с различными файлами. В табл. 5.1 приведены наиболее распространенные операторы переадресации.

Во время перенаправления стандартного потока ошибок следует указывать дескриптор файла (2). Для потоков ввода и вывода делать это не обязательно.

Таблица 5.1. Основные операторы переадресации

команда > файл

Направляет стандартный поток вывода в новый файл

команда 1> файл

Направляет стандартный поток вывода в указанный файл

команда >> файл

Направляет стандартный поток вывода в указанный файл (режим присоединения)

команда > файл 2>&1

Направляет стандартные потоки вывода и ошибок в указанный файл

команда 2> файл

Направляет стандартный поток ошибок в указанный файл

команда 2» файл

Направляет стандартный поток ошибок в указанный файл (режим присоединения)

команда >> файл 2>&1

Направляет стандартные потоки вывода и ошибок в указанный файл (режим присоединения)

команда < файл1 > файл2

Получает входные данные из первого файла и направляет выходные данные во второй файл

команда < файл

В качестве стандартного входного потока получает данные из указанного файла

команда << разделитель

Получает данные из стандартного потока ввода до тех пор, пока не встретится разделитель

команда <&m

В качестве стандартного входного потока получает данные из файла с дескриптором m

команда > &m

Направляет стандартный поток вывода в файл с дескриптором m

5.7.1. Переадресация стандартного потока вывода

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

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

  • Читать дальше
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win