1

我知道要将标准错误和输出重定向到文件,我必须这样做:

make > & ! output.txt

注意我!用来覆盖文件。但是如何将标准错误重定向到文件并将标准输出留在屏幕上?或者更好的是在文件中同时输出错误和输出,同时在屏幕上输出,这样我就可以看到我的编译进展如何?我试过了:

make 2>! output.txt 

但它给了我一个错误。

4

3 回答 3

2

请注意,>它足以覆盖文件。tail -f如果将输出重定向到文件,您可以使用该命令在屏幕上查看输出:

$(make 1>output.txt 2>error.txt &) && tail -f output.txt error.txt
于 2013-05-03T02:18:50.560 回答
2

您可以使用 pipe into tee 命令简单地做到这一点。以下会将 stdout 和 stderr 放入一个文件以及终端:

make |& tee output.txt

编辑

来自 GNU Bash 手册,第3.2.2 节管道的解释:

如果使用'|&',command1的标准错误,除了它的标准输出,通过管道连接到command2的标准输入;它是 2>&1 | 的简写。标准错误到标准输出的这种隐式重定向是在命令指定的任何重定向之后执行的。

于 2013-05-28T16:31:56.713 回答
1

您正在阅读 bash/sh 文档并使用 tcsh。tcsh 没有任何方法可以仅重定向 stderr。您可能想要切换到非 csh shell 之一。

于 2013-05-03T03:41:29.870 回答