我知道这些:
$ command 2>> error
$ command 1>> output
有什么方法我可以输出标准错误文件和输出标准输出到输出文件在bash的同一行?
我知道这些:
$ command 2>> error
$ command 1>> output
有什么方法我可以输出标准错误文件和输出标准输出到输出文件在bash的同一行?
只需将它们添加到一行命令2>>错误1>>输出
但是,请注意>>用于在文件已经有数据的情况下追加。然而,>将覆盖文件中的任何现有数据。
所以,命令2>错误1>输出如果不想追加。
为了完成,您可以将1>写成>,因为默认的文件描述符是输出。所以1>和>是一样的。
因此,命令2>错误1>输出变成,命令2>错误>输出
试试这个:
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)和用户名,可能需要密码,也可能不需要。