Допустим, вы хотите направить вывод команды sort в некоторый файл,
чтобы сохранить упорядоченный по алфавиту список на диске. Командная оболочка
позволяет перенаправить (redirect) стандартный вывод команды в файл,
используя символ ">". Приведем пример:
/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
apples
bananas
carrots
/home/larry/papers#
Технически команда sort < items эквивалентна команде sort
items, однако первая из них демонстрирует следующее: при выдаче команды
sort < items система ведет себя так, как если бы данные, которые
содержатся в файле
items, были введены со стандартного ввода.
Перенаправление осуществляется командной оболочкой. Команде sort
не сообщалось имя файла items: эта команда читала данные из своего
стандартного ввода, как если бы мы вводили их с клавиатуры.
Введем понятие фильтра (filter). Фильтром
является программа, которая читает данные из стандартного ввода, некоторым
образом их обрабатывает и результат направляет на стандартный вывод. Когда
применяется перенаправление, в качестве стандартного ввода и вывода могут
выступать файлы. Как указывалось выше, по умолчанию, stdin и stdout
относятся к клавиатуре и к экрану соответственно. Программа sort
является простым фильтром -- она сортирует входные данные и посылает результат
на стандартный вывод. Совсем простым фильтром является программа cat
-- она ничего не делает с входными данными, а просто пересылает их на выход.