如何将脚本/程序输出到文件中?

我正在使用make编译程序,并希望将make的输出写入文件。 我尝试过使用>运算符

make > build_log.txt 

并使用tee命令

 make | tee build_log.txt 

但问题是一些输出进入文件但rest一直出现在屏幕上。

我可以在运行make之后将文本从终端复制/粘贴到文件中,但这不是解决方案。

所以我的问题是如何保存,即将所有输出重定向到文件,以便它只进入文件而不出现在屏幕上。

终端中显示的文本来自stderr流(2)。 如果只执行make > build_log.txt ,则只将stdout (1)流重定向到build_log.txt文件。

  • stdout是标准输出流,文件描述符编号为1.这是在shell中重定向的默认流。
  • stderr是标准错误流,文件描述符编号为2

要将stderr流重定向到该build_log.txt文件,请使用:

 make > build_log.txt 2>&1 
  • make被执行了
    • stdout流被重定向( > )到build_log.txt
    • stderr流重定向( 2> )到stdout流( &1 ),该流被重定向到build_log.txt

顺序很重要,你不能切换重定向运算符,如make 2>&1 > build_log.txt

替代命令:

 make 2>&1 | tee build_log.txt > /dev/null 

需要重定向到/dev/null来隐藏输出, tee将其输入写入build_log.txt并输出它。