Одна из самых интересных и полезных тем для системных администраторов и новых пользователей, которые только начинают разбираться в работе с терминалом - это перенаправление потоков ввода вывода Linux. Эта особенность терминала позволяет перенаправлять вывод команд в файл, или содержимое файла на ввод команды, объединять команды вместе, и образовать конвейеры команд.
В этой статье мы рассмотрим как выполняется перенаправление потоков ввода вывода в Linux, какие операторы для этого используются, а также где все это можно применять.
Содержание статьи: Как работает перенаправление ввода вывода Перенаправить вывод в файл Перенаправить ошибки в файл Перенаправить стандартный вывод и ошибки в файл Стандартный ввод из файла Использование тоннелей Выводы Как работает перенаправление ввода вывода
Все команды, которые мы выполняем, возвращают нам три вида данных: Результат выполнения команды, обычно текстовые данные, которые запросил пользователь; Сообщения об ошибках - информируют о процессе выполнения команды и возникших непредвиденных обстоятельствах; Код возврата - число, которое позволяет оценить правильно ли отработала программа.
В Linux все субстанции считаются файлами, в том числе и потоки ввода вывода linux - файлы. В каждом дистрибутиве есть три основных файла потоков, которые могут использовать программы, они определяются оболочкой и идентифицируются по номеру дескриптора файла: STDIN или 0 - этот файл связан с клавиатурой и большинство команд получают данные для работы отсюда; STDOUT или 1 - это стандартный вывод, сюда программа отправляет все результаты своей работы. Он связан с экраном, или если быть точным, то с терминалом, в котором выполняется программа; STDERR или 2 - все сообщения об ошибках выводятся в этот файл.
Перенаправление ввода/вывода позволяет заменить один из этих файлов на свой. Например, вы можете заставить программу читать данные из файла в файловой системе, а не клавиатуры, также можете выводить ошибки в файл, а не на экран и т д. Все это делается с помощью символов "". Перенаправить вывод в файл
Все очень просто. Вы можете перенаправить вывод в файл с помощью символа >. Например, сохраним вывод команды top:
top -bn 5 > top.log
Опция -b заставляет программу работать в не интерактивном пакетном режиме, а n - повторяет операцию пять раз, чтобы получить информацию обо всех процессах. Теперь смотрим что получилось с помощью cat:
cat top.log