将所有输出重定向到文件
这个问题在这里已经有了答案:
该部分写入stderr,使用2>
重定向它。 例如:
foo > stdout.txt 2> stderr.txt
或者如果你想在同一个文件中:
foo > allout.txt 2>&1
注意:这适用于(ba)sh,检查你的shell是否有正确的语法
所有POSIX操作系统都有3个流:stdin,stdout和stderr。 stdin是输入,它可以接受stdout或stderr。 stdout是主要输出,它用>
, >>
或|
重定向 。 stderr是错误输出,它被单独处理,以便任何异常不会传递给命令或写入可能会中断的文件; 通常,这被发送到某种类型的日志,或者直接转储,即使stdout被重定向。 要将两者重定向到相同的地方,请使用:
command &> /some/file
编辑 :感谢扎克指出,上述解决方案是不可移植的 - 使用,而不是:
*command* > file 2>&1
如果您想要消除错误,请执行以下操作:
*command* 2> /dev/null
例如,要在控制台上获取输出,并在文件file.txt
获取输出。
make 2>&1 | tee file.txt
注意: &
(在2>&1
)指定1
不是文件名,而是文件描述符。
上一篇: Redirect all output to file
下一篇: How do I compare two string variables in an 'if' statement in Bash?