捕获来自make的stderr

时间:2014-07-31 10:31:15

标签: shell redirect

我已经在这个主题上阅读了关于stackoverflow的几篇帖子,但似乎没有什么比我更合适了。 当我运行'make'时,我得到一堆stderr输出。 所以我试过

$ make &> make.log
Invalid null command.
$ make 2> make.log
make: *** No rule to make target '2'. Stop.
$ make >> file.txt 2>&1
Ambiguous output redirect.

有什么好主意吗?我正在使用/ bin / csh。 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作,将stdoutstderr重定向到make.log

make >& make.log

或者

(make > stdout.file) >& stderr.file

或者您可以尝试将stdout发送到终端,并在make.log

中捕获错误
(make >/dev/tty) >& make.log

答案 1 :(得分:0)

此问题已部分在https://stackoverflow.com/a/21345223/3008526中处理。

需要注意的是,在csh联机帮助页中,没有提到stderr,但是如果你查找“诊断输出”,你将获得正确的引用。

你在csh中不能做的是分别重定向stderr和stdout 在csh中你不可能用bash编写:

# bash instruction, no equivalent in csh
$ instruction 2>&1 1>file | pipe_treats_error_info_only

但是,您可以合并两个输出通道:

# bash instruction, direct both stdout and stderr to file
$ instruction 1>file 2>&1
# csh instruction, direct both stdout and stderr to file
% instruction > & file

# bash instruction, direct both stdout and stderr to stdin of pipe_instruction
$ instruction 2>&1 | pipe_instruction
# csh instruction, direct both stdout and stderr to stdin of pipe_instruction
$ instruction | & pipe_instruction