确定输出是 stdout 还是 stderr

确定输出是 stdout 还是 stderr

如何确定进程输出的是 stdout 还是 stderr?

答案1

我只知道三种方法可以确定程序将输出到 STDOUT 以及将输出到 STDERR

  1. 阅读文档。或者

  2. 尝试重定向†

  3. 以红色打印 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>

相关内容