【发布时间】:2018-03-27 08:02:15
【问题描述】:
从this question我学会了如何为命令的每个输出添加前缀:
command | sed "s/^/[prefix] /"
但这只会为stdout 中的每一行添加前缀。
我成功地使用以下方法将前缀也添加到stderr 输出。
command 2>&1 | sed "s/^/[prefix] /"
但这只会将结果发送给stdout。
如何在将行推送到前一个输出时为command 的任何输出添加前缀(同时保留stdout 和stderr)?
【问题讨论】:
-
为什么不以类似的方式重定向?
command 2>&1 | sed "s/^/[prefix] /" 1>&2??您将stderr重定向到stdout,然后通过管道传输到sed,然后如果您想在stderr上发出该输出,则将stdout重定向到stderr。每个管道只是将第一个进程的stdout指向下一个进程的stdin。如果您希望在stderr上获得最终输出,则必须将最终的stdout重定向到stderr。 -
然后我将一切都发送到标准错误。我想保留标准输出和标准错误
-
如果你想在
stdout上输出信息,那么你什么都不用做,这是默认的输出流。只有当您需要更改它时才会重定向。
标签: bash command-line stdout stderr