/home/larry/papers# sort > shopping-list bananas carrots apples {Ctrl-D} /home/larry/papers#Можно увидеть, что результат работы команды sort не выводится на экран, однако он сохраняется в файле с именем shopping-list. Выведем на экран содержимое этого файла:
/home/larry/papers# cat shopping-list apples bananas carrots /home/larry/papers#Пусть теперь исходный неупорядоченный список находится в файле items. Этот список можно упорядочить с помощью команды sort, если указать ей, что она должна читать из данного файла, а не из своего стандартного ввода, и кроме того, перенаправить стандартный вывод в файл, как это делалось выше. Пример:
/home/larry/papers# sort items shopping-list /home/larry/papers# cat shopping-list apples bananas carrots /home/larry/papers#Однако, можно поступить иначе. Можно перенаправить не только стандартный вывод, но и стандартный ввод, используя символ "<":
/home/larry/papers# sort < items apples bananas carrots /home/larry/papers#Технически команда sort < items эквивалентна команде sort items, однако первая из них демонстрирует следующее: при выдаче команды sort < items система ведет себя так, как если бы данные, которые содержатся в файле items, были введены со стандартного ввода. Перенаправление осуществляется командной оболочкой. Команде sort не сообщалось имя файла items: эта команда читала данные из своего стандартного ввода, как если бы мы вводили их с клавиатуры.
Введем понятие фильтра (filter). Фильтром является программа, которая читает данные из стандартного ввода, некоторым образом их обрабатывает и результат направляет на стандартный вывод. Когда применяется перенаправление, в качестве стандартного ввода и вывода могут выступать файлы. Как указывалось выше, по умолчанию, stdin и stdout относятся к клавиатуре и к экрану соответственно. Программа sort является простым фильтром -- она сортирует входные данные и посылает результат на стандартный вывод. Совсем простым фильтром является программа cat -- она ничего не делает с входными данными, а просто пересылает их на выход.