两个管道对应一个命令

两个管道对应一个命令

我对以下语法有点困惑。虽然它有效,但它不明白为什么它有效。看起来 diff 命令附加了两个管道。但不是只有一个吗STDIN

例子:

diff <(echo "foobar") <(echo "barbaz")
diff <(cat foo.txt) <(cat bar.txt)

答案1

管道只是绑定到与 0 (stdin) 不同的文件描述符:

$ echo <(true)
/dev/fd/63
$ echo <(true) <(true)
/dev/fd/63 /dev/fd/62

一个进程当然可以同时拥有多个打开的文件描述符,因此没有问题。

相关内容