Потоки ввода-вывода

В 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 выводятся в консоль, однако их можно разделить и направить в разные места (в консоль, в файл, в другую консольную утилиту).