Определите, является ли вывод stdout или stderr

Как я могу определить, является ли процесс выводом stdout или stderr?

4 ответа

Решение

Есть только три способа, которые я знаю, чтобы определить, что программа выведет на STDOUT, а что на STDERR.

  1. Прочитайте документацию. Или же

  2. Эксперимент с перенаправлением?

  3. печать STDERR красным

†Например:

program > program.stdout 2> program.stderr

Затем посмотрите на два выходных файла, чтобы увидеть, что программа записала в STDOUT и что она написала в STDERR.

Вместо перенаправления вы можете направить tee если вам нужен вывод, чтобы перейти к экрану, а также в файл. См. https://stackoverflow.com/q/692000/477035

На основании вашего комментария запроса:

{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'

Вы можете просто перенаправить stderr в файл, и если в нем что-то появится, это из stderr.

например ls -a 2> ls-all.txt

если по какой-либо причине была отправлена ​​ошибка в stderr, она будет перенаправлена ​​в этот файл.

Если вы хотите сделать это один раз, перенаправьте один из них в другое место.

Пример перенаправления стандарта с >,

ls -al > ls-l.txt (любой вывод здесь не из stdout, если вы видите что-то, это должен быть вывод stderr)

Для перенаправления stderr используйте 2>

Другие вопросы по тегам