协慌网

登录 贡献 社区

在 Bash 中重定向 stderr 和 stdout

我想将一个进程的 stdout 和 stderr 都重定向到一个文件。我该如何在 Bash 中做到这一点?

答案

在这里看看。应该:

yourcommand &>filename

(将stdoutstderr都重定向到文件名)。

do_something 2>&1 | tee -a some_file

这将把 stderr 重定向到 stdout,并将 stdout 重定向到some_file并将其打印到 stdout。

您可以将stderr重定向到stdout,然后将stdout重定向到文件中:

some_command >file.log 2>&1

参见http://tldp.org/LDP/abs/html/io-redirection.html

该格式比仅在 bash 中起作用的最受欢迎的&> 格式更受青睐。在 Bourne Shell 中,它可以解释为在后台运行命令。同样,格式更易读 2(是 STDERR)重定向到 1(STDOUT)。

编辑:更改顺序,如注释中指出