我知道要将标准错误和输出重定向到文件,我必须这样做:
make > & ! output.txt
注意我使用!
覆盖文件。但是如何将标准错误重定向到文件并将标准输出保留到屏幕?或者甚至更好地将错误和输出都存储在文件中但也输出到屏幕上,所以我可以看到我的编译是如何进展的?
我试过了:
make 2>! output.txt
但它给了我一个错误。
答案 0 :(得分:2)
请注意,>
足以覆盖该文件。如果重定向到文件,您可以使用tail -f
命令查看屏幕上的输出:
$(make 1>output.txt 2>error.txt &) && tail -f output.txt error.txt
答案 1 :(得分:2)
您只需使用pipe into tee命令即可完成此操作。以下内容将stdout和stderr放入文件中,也放入终端:
make |& tee output.txt
修改强>
GNU Bash手册的说明,3.2.2 Pipelines部分:
如果使用'|&',则除了命令1之外,还有command1的标准错误 标准输出,通过连接到command2的标准输入 管;它是2>& 1 |的简写。这种隐式重定向 标准输出的标准误差在任何之后执行 命令指定的重定向。
答案 2 :(得分:1)
您正在阅读bash / sh文档并使用tcsh。 tcsh没有任何方法可以重定向stderr。您可能希望切换到其中一个非csh shell。