进程替换与命令替换很相似,命令替换把一个命令的结果赋给一个变量,例如 dir_contents=$(ls -al)
。进程替换则是把一个进程的输出回馈给另一个进程 (换句话说,它把一个命令的结果发送给另一个命令)。
命令替换的形式是由圆括号括起的命令
1 | >(command) |
启动进程替换:它是用 /dev/fd/<n>
文件把在圆括号内的进程的处理结果发送给另外一个进程,在 <
或 >
与圆括号之间是没有空格的. 如果加了空格将会引起错误信息。如果系统的 /dev/fd/<n>
文件不够时,Bash 会使用临时文件。
1 | cat <(ls -l) |
列出系统中3个主要的 bin
目录的所有文件,并且按文件名排序
1 | sort -k 9 <(ls -l /bin) <(ls -l /usr/bin) <(ls -l /usr/X11R6/bin) |
给出两个命令输出的不同之处
1 | diff <(command1) <(command2) |