Как перенаправить stderr на stdout в Bash

How Redirect Stderr Stdout Bash



Команды в Linux принимают некоторый ввод от пользователя, который может быть файлом или любым атрибутом, и при выполнении они дают некоторый вывод, называемый стандартным выводом. Стандартный вывод может быть успешным или ошибочным; оба будут отображаться на экране вашего терминала. Но в некоторых случаях вы хотите сохранить стандартные выходные данные в файле для тестирования или отладки кода. В Linux эти выходные данные могут быть перенаправлены в файл, и процесс его захвата называется перенаправлением.







Каждый процесс в Linux производит три потока данных: stdin, stdout и stderr:



  • стандартный ввод : Принимает ввод от пользователя с клавиатуры
  • стандартный вывод : Выводит результат на экран.
  • stderr : Показывает информацию об ошибке на экране

Каждый поток данных имеет числовой идентификатор:



Числовой идентификатор Имя
0 стандартный ввод
1 стандартный вывод
2 stderr

Давайте подробнее объясним перенаправление:





Как перенаправить стандартный вывод и стандартную ошибку в Bash:

Чтобы перенаправить стандартный вывод команды, мы будем использовать 1 с оператором перенаправления, который больше, чем знак>:

$ls 1>stdout.txt

Приведенная выше команда создаст файл и поместит стандартный вывод команды ls в файл stdout.txt.



Чтобы прочитать файл stdout.txt, используйте:

$Котstdout.txt

Мы также можем перенаправить стандартную ошибку в файл с помощью команды:

$Котmyfile.txt2>stderr.txt

Для просмотра файла stderr.txt используйте:

$Котstderr.txt

Убедитесь, что значение 2 будет больше, чем знак>. Поскольку в каталоге нет файла myfile.txt, команда cat выдаст ошибку, которая будет добавлена ​​в файл stderr.txt.

Эти стандартные выходные данные также можно перенаправить с помощью одной команды, используйте:

$ls 1>stdout.txt2>stderr.txt

Вывод команды ls будет записан в stdout.txt файл, но stderr.txt останется пустым, потому что ошибки не будет.

Теперь займемся stderr.txt:

$Котmyfile.txt1>stdout.txt2>stderr.txt

Используйте указанную ниже команду для чтения stderr.txt.

$Котstderr.txt

И, конечно же, stdout.txt будет пустым.

Заключение :

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