我想将一个命令的结果保存在一个文件中

我想将一个命令的结果保存在一个文件中

我正在使用 cppcheck 工具来分析源代码。

在 gcc 编译器的 shell 提示符下,我给出了如下命令

$ cppcheck abc.cpp  

输出是

checking abc.cpp...   
(error) Possible null pointer dereference: <var> - otherwise it is redundant to check if   <var> is null at line 100    
segmentation fault

我希望将此输出保存在文件中,因此我给出了如下命令

$ cppcheck abc.cpp 2> abc.txt

但abc.txt文件内容如下

checking abc.cpp...  

它只保存第一行,abc.txt 文件中缺少主要错误部分。

我应该使用哪个命令来获取文件中的所有输出行? cppcheck工具的手册是这里

答案1

2从命令中删除并仅用>作重定向运算符。

通过使用,2>您可以将错误流(STDERR)重定向到文件;听起来您想要的是常规输出流(STDOUT)。

cppcheck abc.cpp > abc.txt

如果你想两个都要访问您的文件,您可以将 2(错误流)连接到 1(标准输出流),如下所示:

cppcheck abc.cpp > abc.txt 2>&1

或者使用建议的快捷语法抓住一切。

答案2

您可能需要将 stdout 和 stderr 重定向到您的文件

cppcheck abc.cpp  &>abc.txt

答案3

迦勒是对的关于 > 的使用,但tee如果您想在保存到文件的同时查看日志,也可以使用该命令。

cppcheck abc.cpp | tee my.file.txt

它也应该与 2>&1 一起使用。

cppcheck abc.cpp 2>&1 | tee my.file.txt

相关内容