如何确定进程输出的是 stdout 还是 stderr?
答案1
我只知道三种方法可以确定程序将输出到 STDOUT 以及将输出到 STDERR
阅读文档。或者
尝试重定向†
†例如:
program > program.stdout 2> program.stderr
然后查看两个输出文件,看看程序向 STDOUT 写入了什么以及向 STDERR 写入了什么。
tee
如果你需要将输出继续输出到屏幕和文件,你可以使用管道来代替重定向。请参阅https://stackoverflow.com/q/692000/477035
答案2
根据您的评论请求:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
答案3
您可以将 stderr 重定向到一个文件,如果其中出现任何内容,则它来自 stderr。
例如
ls -a 2> ls-all.txt
如果由于任何原因将错误发送到 stderr,它将被重定向到此文件。
答案4
如果您想一次性执行此操作,请将其中一个重定向到其他地方。
例如,使用 重定向标准输出>
。
ls -al > ls-l.txt(这里的任何输出都不是来自标准输出,如果您看到任何内容,那一定是标准错误输出)
对于 stderr 重定向使用2>