Перенаправить stdout и stderr в файл

Redirect Stdout Stderr File



Когда вы перенаправляете вывод любой команды в файл, вы заметите, что сообщения об ошибках печатаются в окне терминала. Любая команда, выполняемая в любой оболочке Linux, такой как bash, использует три обычных потока ввода-вывода. Для представления каждого потока используется числовой дескриптор файла.

  • Стандартный поток ввода (stdin): 0
  • Стандартный поток вывода (stdout): 1
  • Стандартный поток ошибок (stderr): 2

В этом посте мы рассмотрим информацию о перенаправлении stdout и stderr в файл.







Стандартный вывод (стандартный вывод):

Каждая операционная система, основанная на Linux, имеет убеждение в том, что по умолчанию для выполняемой команды используется место. Все называют это понятие стандартным выводом или стандартным выводом, чтобы облегчить его звучание. Оболочка Bash или Zsh постоянно ищет расположение вывода по умолчанию. Когда оболочка обнаруживает новый вывод, она отображает его на экране терминала, чтобы вы могли его увидеть. В противном случае он отправит вывод в местоположение по умолчанию.



Стандартная ошибка (stderr):

Стандартная ошибка или stderr аналогична стандартному вводу и выводу, но используется для хранения сообщений об ошибках. Стандартную ошибку можно перенаправить в командную строку или в файл с помощью терминала. Если вы хотите записывать или хранить сообщения в отдельном файле журнала или скрыть сообщения об ошибках, вам поможет перенаправление stderr. Теперь перейдем к практической стороне перенаправления stdout и stderr.



Перенаправление stdout и stderr в файл:

Поскольку перенаправление - это метод захвата вывода программы и отправки его в качестве ввода в другую команду или файл. Потоки ввода-вывода можно перенаправить, используя оператор n>, где n - номер дескриптора файла. Для перенаправления stdout мы используем 1>, а для stderr в качестве оператора добавляется 2>.





Мы создали файл с именем sample.txt для хранения перенаправленного вывода в нашем текущем каталоге.



(Command> file) считается классическим оператором перенаправления, который перенаправляет только стандартный вывод со стандартной ошибкой, отображаемой в терминале. Мы также продемонстрируем различные варианты перенаправления stderr.

Перенаправление stderr и stdout в отдельные файлы:

Ниже приведен синтаксис команды для перенаправления stdout и stderr в отдельные файлы.

команда >из2>ошибка

Приведенная ниже команда перенаправит вывод в выходной файл, а сообщения об ошибках - в файл ошибок.

$Котsample.txt>из2>ошибка

Перенаправление stderr на stdout:

Обычной практикой является перенаправление stderr со стандартным выводом программы для хранения всего в одном файле. Вот синтаксис команды для перенаправления stderr на stdout:

команда >из2> &1$ls >samplefile.txt2> &1

$Котsamplefile.txt

> out redirects перенаправляет stdout на samplefile.txt, а 2> & 1 перенаправляет stderr в текущее расположение stdout.

Если stderr сначала перенаправляется на stdout, используйте приведенную ниже команду для перенаправления stdout в файл.

команда 2> &1 > файл$ls 2> &1 >samplefile.txt

$Котsamplefile.txt

&> также используется для тех же функций, что и 2> & 1.

команда &> файл$ls &>samplefile.txt

$Котsamplefile.txt

Перенаправление stdout и stderr в один файл:

Все оболочки не поддерживают это перенаправление формы, но bash и Zsh поддерживают его. Stdout и stderr можно перенаправить, используя следующий синтаксис.

команда &>из$Котsample.txt&>из

В следующем разделе статьи мы рассмотрим отдельный пример для перенаправления stdout и stderr.

Перенаправление stdout в файл:

Стандартный вывод представлен цифрой 1 в списке номеров файловых дескрипторов. Для команды перенаправления без какого-либо номера дескриптора файла терминал устанавливает значение 1. Синтаксис для перенаправления stdout в файл следующий:

команда > файл

Мы используем файл sample.file для хранения стандартного вывода команды ls -al

$ls >sample.txt

$Котsample.txt

команда 1> файл$ls 1>sample.txt

$Котsample.txt

Перенаправление stderr в файл:

Используйте оператор 2> для перенаправления stderr в файл.

команда 2> файл $ls 2>sample.txt

Мы можем объединить выполнение для stderr и stdout в одной команде перенаправления.

команда 2>error.txt1>output.txt

В приведенном ниже примере сообщения об ошибках будут храниться в error.txt, где output.txt будет иметь стандартный вывод команды ls.

$ls 2>error.txt1>output.txt

$Котoutput.txt

Заключение:

Наличие концепции перенаправления и файловых дескрипторов для потоков ввода-вывода очень ценно при работе в терминале Linux. В этом посте мы говорили о обычных потоках ввода-вывода, включая stdout и stderr. В первом разделе этого поста представлена ​​подробная информация о перенаправлении, потоках ввода-вывода и числовом дескрипторе файла. Далее вы видели практический пример различных форм перенаправления stdout и stderr.