Answers:
我仅知道三种确定程序将输出到STDOUT以及将什么输出到STDERR的方法
阅读文档。要么
尝试进行重定向†
†例如:
program > program.stdout 2> program.stderr
然后查看两个输出文件,以查看程序已写入STDOUT的内容以及程序已写入STDERR的内容。
tee
如果您需要输出以继续进入屏幕以及进入文件,则可以通过管道代替重定向。参见/programming//q/692000/477035
根据您的评论请求:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
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; }
如果您要一次性执行此操作,请将其中一个重定向到其他位置。
例如,使用重定向标准>
。
ls -al> ls-l.txt(此处的任何输出都不来自stdout,如果看到任何输出,则必须是stderr输出)
对于stderr重定向,请使用 2>
program | grep .
以红色打印STDOUT。