Как я могу определить, является ли процесс выводом stdout или stderr?
4 ответа
Я знаю только три способа определения того, что программа выведет в STDOUT, а что в 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>