我知道这些:

$ command 2>> error

$ command 1>> output

有什么方法我可以输出标准错误文件和输出标准输出到输出文件在bash的同一行?


只需将它们添加到一行命令2>>错误1>>输出

但是,请注意>>用于在文件已经有数据的情况下追加。然而,>将覆盖文件中的任何现有数据。

所以,命令2>错误1>输出如果不想追加。

为了完成,您可以将1>写成>,因为默认的文件描述符是输出。所以1>和>是一样的。

因此,命令2>错误1>输出变成,命令2>错误>输出


像这样:

$ command >>output 2>>error

或者如果你想在一个文件中混合输出(stdout & stderr),你可能想使用:

command > merged-output.txt 2>&1

试试这个:

your_command 2>stderr.log 1>stdout.log

更多的信息

数字0到9是bash中的文件描述符。 0代表标准输入,1代表标准输出,2代表标准误差。3到9是供其他临时使用的。

任何文件描述符都可以使用操作符>重定向到一个文件或另一个文件描述符。您可以使用操作符>>来附加到文件中,而不是创建一个空文件。

用法:

file_descriptor > filename

file_descriptor > &file_descriptor

请参考高级bash脚本编写指南:第20章。I / O重定向。


多个命令的输出可以被重定向。这既适用于命令行,也适用于bash脚本。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)和用户名,可能需要密码,也可能不需要。