如何将stderr和stdout重定向到同一行bash中的不同文件?

use*_*637 164 linux bash

我知道的很多:

$ command 2>> error

$ command 1>> output
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以将stderr输出到错误文件并将stdout输出到同一行bash中的输出文件中?

Suj*_*joy 274

只需将它们添加到一行中即可 command 2>> error 1>> output

但是,请注意,>>如果文件已有数据,则附加.然而,>将覆盖文件中的任何现有数据.

所以,command 2> error 1> output如果你不想追加.

只是为了完成,您可以编写1>,>因为默认文件描述符是输出.所以1>并且>是一回事.

所以,command 2> error 1> output成为,command 2> error > output

  • @ThorSummoner http://www.tldp.org/LDP/abs/html/io-redirection.html是我认为您正在寻找的.Fwiw,看起来像`command&2> err.log`并不十分合法 - 该语法中的&符用于文件描述符作为目标,例如`command 1>&2`会将stdout重新路由到stderr. (4认同)
  • 好答案!我非常喜欢您对如何将“ 1>”写为“>”的解释。 (2认同)

Qui*_*hou 16

试试这个:

your_command 2>stderr.log 1>stdout.log
Run Code Online (Sandbox Code Playgroud)

更多信息

数字0通过9是bash中的文件描述符. 0代表标准输入,1代表标准输出,2代表标准误差.3通过9任何其他临时使用备用.

可以使用运算符将​​任何文件描述符重定向到文件或另一个文件描述符>.您可以改为使用运算符>>附加到文件而不是创建空文件.

用法:

file_descriptor > 文件名

file_descriptor >&file_descriptor

请参阅http://www.tldp.org/LDP/abs/html/io-redirection.html.


Did*_*set 11

像那样:

$ command >>output 2>>error
Run Code Online (Sandbox Code Playgroud)


zta*_*013 10

或者,如果您想将输出(stdout和stderr)混合在一个文件中,您可能需要使用:

command > merged-output.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

  • 这更简单,因为"command&> merged-output.txt" (25认同)
  • 这不是问题的答案. (25认同)