bin*_*inW 6 gnome-terminal output redirect
我正在使用 make 编译程序并希望将 make 的输出写入文件。我曾尝试使用 > 运算符
make > build_log.txt
Run Code Online (Sandbox Code Playgroud)
并使用 tee 命令,例如
make | tee build_log.txt
Run Code Online (Sandbox Code Playgroud)
但问题是一些输出进入文件,但其余部分一直出现在屏幕上。
我可以在运行 make 后简单地将文本从终端复制/粘贴到文件中,但这不是解决方案。
所以我的问题是如何保存,即将所有输出重定向到文件,以便它只进入文件而不出现在屏幕上。
Lek*_*eyn 10
终端中显示的文本来自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
Run Code Online (Sandbox Code Playgroud)
make 被执行并
stdout流被重定向(>)到build_log.txtstderr流被重定向(2>)到stdout流(&1),将其重新定向到build_log.txt顺序很重要,您不能像make 2>&1 > build_log.txt.
替代命令:
make 2>&1 | tee build_log.txt > /dev/null
Run Code Online (Sandbox Code Playgroud)
/dev/null需要重定向到隐藏输出,tee将其输入写入build_log.txt并输出。