Одна из самых интересных и полезных тем для системных администраторов и новых пользователей, которые только начинают разбираться в работе с терминалом - это перенаправление потоков ввода вывода Linux. Эта особенность терминала позволяет перенаправлять вывод команд в файл, или содержимое файла на ввод команды, объединять команды вместе, и образовать конвейеры команд.

В этой статье мы рассмотрим как выполняется перенаправление потоков ввода вывода в Linux, какие операторы для этого используются, а также где все это можно применять.

Содержание статьи: Как работает перенаправление ввода вывода Перенаправить вывод в файл Перенаправить ошибки в файл Перенаправить стандартный вывод и ошибки в файл Стандартный ввод из файла Использование тоннелей Выводы Как работает перенаправление ввода вывода

Все команды, которые мы выполняем, возвращают нам три вида данных: Результат выполнения команды, обычно текстовые данные, которые запросил пользователь; Сообщения об ошибках - информируют о процессе выполнения команды и возникших непредвиденных обстоятельствах; Код возврата - число, которое позволяет оценить правильно ли отработала программа.

В Linux все субстанции считаются файлами, в том числе и потоки ввода вывода linux - файлы. В каждом дистрибутиве есть три основных файла потоков, которые могут использовать программы, они определяются оболочкой и идентифицируются по номеру дескриптора файла: STDIN или 0 - этот файл связан с клавиатурой и большинство команд получают данные для работы отсюда; STDOUT или 1 - это стандартный вывод, сюда программа отправляет все результаты своей работы. Он связан с экраном, или если быть точным, то с терминалом, в котором выполняется программа; STDERR или 2 - все сообщения об ошибках выводятся в этот файл.

Перенаправление ввода/вывода позволяет заменить один из этих файлов на свой. Например, вы можете заставить программу читать данные из файла в файловой системе, а не клавиатуры, также можете выводить ошибки в файл, а не на экран и т д. Все это делается с помощью символов "". Перенаправить вывод в файл

Все очень просто. Вы можете перенаправить вывод в файл с помощью символа >. Например, сохраним вывод команды top:

top -bn 5 > top.log



Опция -b заставляет программу работать в не интерактивном пакетном режиме, а n - повторяет операцию пять раз, чтобы получить информацию обо всех процессах. Теперь смотрим что получилось с помощью cat:

cat top.log