Linux позволяет реализовать такое поведение за счет специальных дескрипторов ввода-вывода, также именуемых потоками. Они являются своего рода файлами, но не в привычном для понимания смысле. Каждая программа имеет доступ к трем таким потокам. Взаимодействие с ними ведется, так же как и с обычными файлами, то есть можно читать из них информацию или записывать.
Перенаправление потоков ввода-вывода
Как говорилось выше, пользователь консоли не имеете прямого доступа к потокам ввода-вывода. Однако операционная система Linux и командные интерпретаторы реализуют механизмы их перенаправления. Например, вместо вывода результата выполнения программы в терминал можно сохранить его в файл.
Рассмотрим небольшой пример, приведенный ниже. Команда ls выводит список файлов, находящихся в указанном каталоге. С помощью символа «>» мы приказываем командному интерпретатору не выводить результат в терминал, а перенаправить его в файл result.txt. Набор символов «~/», стоящий перед именем файла, сообщает операционной системе о необходимости создать его в домашней директории текущего пользователя. Если файл уже существует, он будет перезаписан.