Знакомство с Linux

         

Стандартный вход и стандартный выход


Многие команды 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 не полезная вещь?

3.8.2



Содержание раздела