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