我非常了解:
$ command 2>> error
$ command 1>> output
有什么方法可以将stderr输出到错误文件并将stdout输出到同一行bash中的输出文件中?
答案 0 :(得分:260)
只需将它们添加到一行command 2>> error 1>> output
但请注意,如果文件已有数据,>>
将用于附加。然而,>
将覆盖文件中的任何现有数据。
所以,command 2> error 1> output
如果您不想追加。
为了完成起见,您可以将1>
写为>
,因为默认文件描述符是输出。所以1>
和>
是一回事。
因此,command 2> error 1> output
变为command 2> error > output
答案 1 :(得分:15)
试试这个:
your_command 2>stderr.log 1>stdout.log
数字0
到9
是bash中的文件描述符。
0
代表标准输入,1
代表标准输出,2
代表标准错误。任何其他临时用途都可以3
到9
。
可以使用运算符>
将任何文件描述符重定向到文件或其他文件描述符。您可以使用运算符>>
附加到文件而不是创建空文件。
用法:
file_descriptor >的文件名强>
file_descriptor > &安培;的类file_descriptor 强>
答案 2 :(得分:12)
或者,如果您想将输出(stdout和stderr)混合在一个文件中,您可能需要使用:
command > merged-output.txt 2>&1
答案 3 :(得分:9)
就像那样:
$ command >>output 2>>error
答案 4 :(得分:0)
可以重定向多个命令的输出。这适用于命令行或在bash脚本中最有用。 -s
将密码提示引导到屏幕。
Hereblock cmds stdout / stderr被发送到单独的文件,没有任何显示。
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Hereblock cmds stdout / stderr发送到单个文件并显示。
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
此处将cmd stdout / stderr cmd发送到单独的文件,然后将stdout显示出来。
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
取决于您是谁(用户)和用户名,可能需要密码,也可能不需要密码。