<(命令)是過程替代。基本上,它創建一個稱爲「命名管道」的特殊類型的文件,然後將該命令的輸出重定向爲命名管道。因此,例如,假設您想要瀏覽特大目錄中的文件列表。你可以這樣做:
ls /usr/bin | more
或者這樣:
more <(ls /usr/bin)
但不是這樣的:
more $(ls /usr/bin)
當你進一步調查的原因就很清楚:
~$ echo $(ls /tmp)
gedit.maxtothemax.436748151 keyring-e0fuHW mintUpdate orbit-gdm orbit-maxtothemax plugtmp pulse-DE9F3Ei96ibD pulse-PKdhtXMmr18n ssh-wKHyBU1713 virtual-maxtothemax.yeF3Jo
~$ echo <(ls /tmp)
/dev/fd/63
~$ cat <(ls /tmp)
gedit.maxtothemax.436748151
keyring-e0fuHW
mintUpdate
orbit-gdm
orbit-maxtothemax
plugtmp
pulse-DE9F3Ei96ibD
pulse-PKdhtXMmr18n
ssh-wKHyBU1713
virtual-maxtothemax.yeF3Jo
/dev/fd /不管像文本文件一樣圓括號之間的命令的輸出。
難道你不是指「<<」? – reinierpost 2010-03-14 17:51:34
無論如何,「man sh」是你的朋友。 – reinierpost 2010-03-14 17:52:05
它不是'<<',它是'<和'<(...)'運營商,如果我記得沒錯 – 2010-03-14 17:55:37