我正在测试一种向后间接引用,然后遇到了这个问题。我没有指定所需的行为,因为没有——我只是想了解结果——到(未命名的)管道的符号链接?再说几步,到底发生了什么?
pehlic@ely:~/src/bash/sandbox/bash$ ls -al >(cat)
l-wx------ 1 pehlic pehlic 64 Jan 13 23:39 /dev/fd/63 -> pipe:[26718]
答案1
这实际上并不是在执行ls -al
并将其传递给cat
,而是在执行进程替换cat
并将其呈现为文件,ls -al
然后在文件上执行列表。
stdin
因此,进程替换会创建一个管道,连接“内部”程序的文件对象和文件,cat
然后将文件提供给“外部”程序。然后,您ls
对此执行操作,并看到它已提供“文件” /dev/fd/63
。