В Linux существует три потока данных:
STDIN (0) - Поток, вводимый в консоль (любая команда).
STDOUT (1) - Поток информации, выводимой консолью (результат выполнения команды).
STDERR (2) - Поток ошибок, полученных при выполнении команды.
Пример:
tux@ubuntu0:~$ ls -l testfile.txt
-rw-rw-r-- 1 tux tux 0 feb 10 12:51 testfile.txt
tux@ubuntu0:~$ ls -l testfile2.txt
ls: cannot access 'testfile2.txt': No such file or directory
В примере пользователь выполняет команду ls с опцией -l по отношению к двум файлам - существующему testfile.txt и несуществующему testfile2.txt.
ls -l testfile.txt
и ls -l testfile2.txt
- потоки STDIN.
-rw-rw-r-- 1 tux tux 0 feb 10 12:51 testfile.txt
- поток STDOUT.
ls: cannot access 'testfile2.txt': No such file or directory
- поток STDERR
Потоки STDIN и STDERR выводятся в консоль, однако их можно разделить и направить в разные места (в консоль, в файл, в другую консольную утилиту).