Множество программ принимают информацию с терминала или клавиатуры и выводят ее на экран терминала. В Linux ввод с клавиатуры связан с чтением из файла под названием stdin, а вывод на терминал – с выводом в файл под названием stdout. Можно перенаправить ввод и вывод так, чтобы вместо ввода с терминала или вывода на терминал информация считывалась из файла или направлялась в файл.
Для перенаправления ввода команды или программы так, чтобы для ввода использовался файл, а не терминал применяется оператор < (символ «меньше»). Предположим, что нужно отправить файл с именем info по электронной почте адресату Sasha. Вместо того чтобы вручную перепечатывать содержимое файла для команды mail, укажите этой команде использовать файл info в качестве входного (stdin):
#mail Sasha < info
Для перенаправления вывода программы в файл применяется оператор > (символ «больше»). Вместо выдачи на экран терминала, информация помещается в файл. При этом, если файл с таким именем уже был – его содержимое замещается, а если нет, то такой файл создаётся. Команда date отображает на экране текущее время и дату. Чтобы сохранить текущее время и дату в файле с именем now воспользуемся командой:
|
|
#date > now
Если нужно добавить или дописать информацию в конец существующего файла, используется двухсимвольный оператор >>. Для добавления текущей даты в файл с именем report наберём в командной строке:
#date >> report
Рассмотрим в качестве примера ещё три команды:
#date >> sales_report
#sort < sales >> sales_report
(аналогично: #sort sales >> sales_report)
#mail Sasha Jack < sales_report
В первой строке примера вывод команды date дописывается в файл sales_report. Во второй строке примера команда sort считывает ввод из файла sales, а вывод добавляется к файлу sales_report. Последней строкой файл sales_report отправляется пользователям Sasha и Jack по электронной почте.
Операторы перенаправления ввода-вывода Linux перечислены в таблице 1.
Таблица 1. Операторы перенаправления ввода-вывода в Linux
Оператор | Значение | Пример |
< | Принять ввод из файла | mail sasha < report |
> | Направить вывод в файл | date > now |
>> | Добавить вывод в конец файла | date >> report |