8

我正在编写一个 bash 脚本,需要将我运行的命令的输出stdoutstderr输出重定向到一个文件,相应地在每一行前面加上stderror stdout

有没有一种简单的方法可以做到这一点?

4

2 回答 2

11

试试这个:

(myCommand | sed s/^/stdout:/ >> myLogfile) 2>&1 | sed s/^/stderr:/ >> myLogFile

第一个管道stdout:向 的标准输出插入前缀myCommand并将其附加到myLogFile.

括号用于对所有这些进行单个命令。他们告诉我们进一步的重定向适用于括号内的内容,而sed不仅仅是。

然后标准错误被重定向到标准输出2>&1(记住原来的标准输出已经被重定向到了myLogFile)。第二个管道为其插入一个stderr:前缀并将其附加到myLogFile.

于 2010-03-12T12:26:24.430 回答
11

来自Debiandevscripts的annotate-output就是这样做的。

其手册页中的示例:

$ 注释输出
21:41:21 我:开始制作
21:41:21 O: gcc -Wall program.c
21:43:18 E:program.c:无法编译,我花了很长时间才找到
21:43:19 E:collect2:ld 返回 1 个退出状态
21:43:19 E: make: *** [all] 错误 1
21:43:19 I:以退出代码 2 结束
于 2010-03-13T07:02:49.273 回答