shell的进程替换

进程替换与命令替换很相似,命令替换把一个命令的结果赋给一个变量,例如 dir_contents=$(ls -al) 。进程替换则是把一个进程的输出回馈给另一个进程 (换句话说,它把一个命令的结果发送给另一个命令)。

命令替换的形式是由圆括号括起的命令

1
2
>(command)
<(command)

启动进程替换:它是用 /dev/fd/<n> 文件把在圆括号内的进程的处理结果发送给另外一个进程,在 <> 与圆括号之间是没有空格的. 如果加了空格将会引起错误信息。如果系统的 /dev/fd/<n> 文件不够时,Bash 会使用临时文件。

1
2
cat <(ls -l)
# 等同于 ls -l | cat

列出系统中3个主要的 bin 目录的所有文件,并且按文件名排序

1
2
sort -k 9 <(ls -l /bin) <(ls -l /usr/bin) <(ls -l /usr/X11R6/bin)
# 注意是三个明显不同的命令输出回馈给'sort'.

给出两个命令输出的不同之处

1
diff <(command1) <(command2)
有钱任性,请我吃包辣条
0%