如何将脚本/程序输出到文件中?
我正在使用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
并输出它。