【发布时间】:2013-05-31 23:29:02
【问题描述】:
例如,获取一个程序的标准输出,使用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/')
但我不知道如何将管道重新连接成菱形。
【问题讨论】:
-
查看 mkfifo 命令,它的目的是按照我认为您的描述进行操作。
-
太棒了!终于找到一个我隐约知道但从未使用过的东西的用途真是太酷了。谢谢。
-
@NSD 这个问题是出于好奇。但是使用 FIFO 来完成我最初的任务会有点傻。我正在处理文件,所以我只是引用了这些文件。我只是在想“如果我只有一个流并且它还没有保存在文件中怎么办”。
-
有人应该写一个答案,也许可以举一个简短的例子来说明如何在单行中使用
mkfifo制作和使用fifos。我会接受这样的废话。 -
@StevenLu 谢谢,现在我明白了这个场景....实际上,当我在问题....根据我的概念,管道在单个指令中使用,即提供一个命令的输出作为后面命令的输入,而您的问题让我想到了以另一种方式反转所有内容! ....