如何为diff创建复杂命令的匿名错误管道?

时间:2013-09-30 18:10:50

标签: bash diff output pipe

在bash中,当需要知道两个命令之间的差异时,可以使用diff,如下所示:

diff <(foo) <(bar)

foobar是复杂命令时,请说ls | grep something

但这只比较标准输出,是否有类似命令来比较错误输出?或者更好的是,两者同时进行?

2 个答案:

答案 0 :(得分:1)

将stderr传递给stdout:

diff <(foo 2>&1) <(bar 2>&1)

答案 1 :(得分:1)

当foo / bar是复杂命令时(例如使用管道/重定向):

diff <((foo) 2>&1) <((bar) 2>&1)

说明:(foo)在子shell中执行foo,允许2>&1将标准输出和错误输出正确合并到标准输出中。

在没有子shell的情况下执行foo将使2>&1仅合并最后一个命令的输出。