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