Как я могу определить, является ли процесс выводом stdout или stderr?
22
Есть только три способа, которые я знаю, чтобы определить, что программа выведет на STDOUT, а что на STDERR.
Прочитайте документацию. Или
Эксперимент с перенаправлением?
†Например:
program > program.stdout 2> program.stderr
Затем посмотрите на два выходных файла, чтобы увидеть, что программа записала в STDOUT и что она написала в STDERR.
Вместо перенаправления вы можете направить трубку, tee
если вам нужен вывод, чтобы перейти к экрану, а также в файл. См. Https://stackoverflow.com/q/692000/477035
program | grep .
печатает STDOUT красным.На основании вашего комментария запроса:
источник
stdout
и 2 =stderr
), чтобы получить вывод внутреннего набора скобок, и выполнитьstdout
однуsed
команду, покаstderr
идет другой.{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Вы можете просто перенаправить stderr в файл, и если в нем что-то появится, это из stderr.
например
ls -a 2> ls-all.txt
если по какой-либо причине была отправлена ошибка в stderr, она будет перенаправлена в этот файл.
источник
Если вы хотите сделать это один раз, перенаправьте один из них в другое место.
Пример перенаправления стандарта с
>
.ls -al> ls-l.txt (любой вывод здесь не из stdout, если вы видите что-то, это должен быть вывод stderr)
Для перенаправления stderr используйте
2>
источник