Стандартные поток ввода (stdin) и стандартные потоки вывода (stdout) и ошибок (stderr)

Операционная система linux написана на языке программирования C, в котором по умолчанию открыты три файловых дескриптора, имеющих следующие значения:

  • 1 (stdin) стандартный поток ввода. Из этого потока программа может читать данные.
  • 2 (stdout) стандартный поток вывода. В этот поток программа может выводить данные.
  • 3 (stderr) стандартный поток ошибок. В этот поток программа может выводит сообщения об ошибках.

В shell-оболочке bash стандартный поток ввода stdin соответственно имеет номер 1, а потоки вывода номера 1 для stdout и 2 для stderr.

При запуске shell, например при логине или при запуске командой sh, открывается новая shell-сессия, внутри которой создаются псевдофайлы символьных ссылок на устройства ввода-вывода /dev/stdin, /dev/stdout и /dev/stderr, в которые потоки ввода-вывода можно перенаправлять так же, как в обычные текстовые файлы.