3

例如,获取一个程序的标准输出,获取它的两个副本tee并将它们(一个或最好两个都能够通过其他程序通过管道)发送回vimdiff.

如果无需在磁盘上创建文件就可以完成,则可以加分。

我知道如何将输入直接输入到需要两个输入的程序中,就像这样

vimdiff <(curl http://google.com) <(curl http://archives.com/last_night/google.com)

和 tee 用于制作两个输出流

echo "abc" | tee >(sed 's/a/zzz/') >(sed 's/c/zzz/')

但我不知道如何将管道重新连接成菱形。

4

2 回答 2

1

如果您可以使用fifo,这并不难:

test -e fifo || mkfifo fifo
echo abc | tee >(sed s/a/zzz/ > fifo) | sed s/c/zzz/ | diff - fifo
于 2013-08-31T17:32:23.777 回答
0

顺便说一句,要在 ZSH 下进行这项工作,在 tee 之后需要一个额外的“>”(应该设置 multios 选项):

$ setopt multios
$ test -e fifo || mkfifo fifo
$ echo abc | tee > >(sed s/a/zzz/ > fifo) | sed s/c/zzz/ | diff - fifo
于 2015-05-13T09:21:57.450 回答