Переадресация ввода и вывода
Одна из наиболее полезных концепций в мире Unix - стандартный ввод/вывод. Невзаимодействующие
программы могут получать данные от стандартного устройства ввода, как правило,
клавиатуры. Результаты выводятся на стандартное устройство вывода (обычно, это
экран).
Однако в большинстве оболочек предусмотрена возможность переадресации стандартного
ввода или вщвода, что позволяет создавать сложные командные конструкции на основе
большого количества команд и файлов данных. В гл. 13 мы рассмотрели конвейеризацию
команд, при помощи которой можно переадресовать стандартный вывод на стандартный
ввод. Например, в команде
$ ls -1 | more
результаты выполнения команды Is -1 направляются не на стандартное устройство
вывода, а на стандартный ввод команды more.
Другой способ переадресации стандартного ввода/вывода в оболочке Bash - при помощи
символов переадресации "<" и ">". Рассмотрим ситуацию,
когда надо записать в файл список содержимого каталога. Для этого можно воспользоваться
следующей командой.
$ ls -1 > filelist
По этой команде стандартный вывод команды Is -1 будет переадресован в файл с именем
filelist. В следующей команде происходит переадресация ввода.
$ mail user@juxta.com
< filelist
Здесь
файл filelist используется в качестве стандартного устройства ввода для команды
mail, образуя текст сообщения электронной почты.