我知道这些:
$ command 2>> error $ command 1>> output
有什么方法我可以输出标准错误文件和输出标准输出到输出文件在bash的同一行?
只需在一行command 2>> error 1>> output中添加它们
command 2>> error 1>> output
但是,请注意,>>用于在文件已经有数据的情况下追加。然而,>将覆盖文件中任何现有数据。
>>
>
所以,如果你不想追加,command 2> error 1> output。
command 2> error 1> output
为了完成,你可以把1>写成>,因为默认的文件描述符是输出。所以1>和>是同一个东西。
1>
因此,command 2> error 1> output变成了,command 2> error > output
command 2> error > output
像这样:
$ command >>output 2>>error
或者如果你喜欢混合输出(stdout &Stderr)在一个文件中,你可能想使用:
command > merged-output.txt 2>&1
试试这个:
your_command 2>stderr.log 1>stdout.log
0
9
1
2
3
任何文件描述符都可以使用操作符>重定向到一个文件或另一个文件描述符。你可以使用操作符>>来追加一个文件,而不是创建一个空文件。
用法:
file_descriptor > filename file_descriptor > &file_descriptor
请参考高级bash脚本指南:第20章。I / O重定向。
多个命令的输出可以被重定向。这既适用于命令行,也适用于bash脚本。-s将密码提示指向屏幕。
-s
在此block中,cmds stdout/stderr被发送到单独的文件,没有任何显示。
sudo -s -u username <<'EOF' 2>err 1>out ls; pwd; EOF
在此block中,cmds的stdout/stderr被发送到单个文件并显示。
sudo -s -u username <<'EOF' 2>&1 | tee out ls; pwd; EOF
在此block中,cmds stdout/stderr被发送到单独的文件和stdout来显示。
sudo -s -u username <<'EOF' 2>err | tee out ls; pwd; EOF
取决于你是谁(whoami)和用户名,可能需要密码,也可能不需要。