将 stdout 和 stderr 重定向到带有前缀的单个文件
我正在编写一个 bash 脚本,需要将我运行的命令的 stdout
和 stderr
输出重定向到单个文件,并在每行前面加上 stderr
前缀> 或 stdout
,相应地。
有没有一个简单的方法可以做到这一点?
I am writing a bash script and need to redirect the stdout
and stderr
output of a command i run to a single file, prefixing each line with stderr
or stdout
, accordingly.
is there a simple way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
注释输出,来自 Debian 的 devscripts,就是这样做的。
其手册页中的示例:
annotate-output, from Debian's devscripts, does this.
The example in its man page:
试试这个:
第一个管道将
stdout:
前缀插入到myCommand
的标准输出中,并将其附加到myLogFile
中。括号用于对所有这些内容发出一个命令。他们告诉我们,进一步的重定向适用于括号内的内容,而不仅仅适用于 sed。
然后使用
2>&1
将标准错误重定向到标准输出(请记住,原始标准输出已经重定向到myLogFile
)。第二个管道向其插入stderr:
前缀并将其附加到myLogFile
中。Try this:
The first pipe inserts a
stdout:
prefix to the standard output ofmyCommand
and appends it tomyLogFile
.The parenthesis are used to make a single command of all of that. They tell that further redirections apply to what is inside parenthesis and not to
sed
only.Then standard error is redirected to standard output with
2>&1
(remember that original standard output has already been redirected to amyLogFile
). Second pipe inserts astderr:
prefix to it and appends it tomyLogFile
.