shell - 我可以获取一个输出流,用 tee 复制它,复制其中一个,然后将两者作为输入返回到 diff 中吗?

标签 shell unix io pipe tee

例如,以单个程序的标准输出为例,使用 tee 获得它的两个副本。并将它们发送回 vimdiff .

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

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

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

并带有用于制作两个输出流的三通
echo "abc" | tee >(sed 's/a/zzz/') >(sed 's/c/zzz/')

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

最佳答案

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

test -e fifo || mkfifo fifo
echo abc | tee >(sed s/a/zzz/ > fifo) | sed s/c/zzz/ | diff - fifo

关于shell - 我可以获取一个输出流,用 tee 复制它,复制其中一个,然后将两者作为输入返回到 diff 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867414/

相关文章:

c - 用 C 实现 "more filter"

Java - 执行 Shell 命令不起作用

c - 使用独立于 Unix 发行版的数据库/索引顺序文件

bash - 为什么在可执行文件或脚本名称之前需要 ./(点斜杠)才能在 bash 中运行它?

haskell - getLine 和 readLn 之间的区别

perl - perl read() 函数和不是 ref 的缓冲区背后的魔法是什么?

linux - bash 合并文件中的行

python - 是否可以通过 ssh 启动 IPython session 并稍后重新登录?

mysql - 在 Mac OSX 上安装 MySQL libmysqlclient-dev 和 UDF 文件

java - 哪个写入文件速度更快?