Стандартный вход и стандартный выход
Многие команды UNIX получают информацию с так называемого
стандартного входа и посылают информацию на (опять же) так
называемый стандартный выход. (Для них часто используются
сокращения ``stdin'' и ``stdout'' соответственно). Ваш shell
организует дело так, что стандартным входом служит клавиатура, а
стандартным выходом - экран.
Вот пример использования команды cat. Нормально cat читает
данные из файлов, чьи имена даны в командной строке и посылает
эти данные прямехонько на stdout. Поэтому при выполнении команды
/home/larry/papers# cat history-final masters-thesis
на экран пойдет файл history-final, а за ним следом
masters-thesis.
Но если команде cat не даны имена файлов в качестве
параметров, она читает данные с stdin и опять же посылает на
stdout. Вот пример.
/home/larry/papers# cat
Hello there.
Hello there.
Bye.
Bye.
[ctrl-D]
/home/larry/papers#
Как видите, каждая строка, которую напечатал
пользователь, немедленно выдается командой cat на экран. При
вводе со стандартного входа команда знает, что ввод закончен
тогда, когда она получит в каком-то виде сигнал EOT
(End-Of-Text). Обычно он обеспечивается нажатием ctrl-D.
Вот другой пример. Команда сортировки sort читает построчно
текст (здесь опять с stdin, поскольку имена файлов в параметрах
не указаны, и посылает отсортированный результат на stdout.
Попробуйте так.
/home/larry/papers# sort
bananas
carrots
apples
[ctrl-D]
apples
bananas
carrots
/home/larry/papers#
Теперь мы можем упорядочить наш список продуктов, подлежащих
закупке, в лексикографическом порядке... ну разве UNIX не
полезная вещь?