管道
例子:
head -3 a | tail -1 : 前面的三行结果通过管道传到后面来,作为后面的输入,随后输出那三行中的最后一行,注意管道后面必须有输入流能接收前面的输出
echo "/" | xargs ls : xargs将输入流输到ls的参数当中。
管道原理:对上面一行命令,当前bash发现有2个命令(管道左边1个,右边1个),然后创建2个子bash,分别取执行第一个和第二个命令,然后将第一个bash的输出转到第二个bash的输入。
echo $BASHPID | cat :会输出一个不同的id
echo $$ | cat:由于$$的特殊性,它的优先级比管道高,bash看到先替换成字符串,然后再看管道,所以会输出父进程的id,而上面的命令就是管道优先了。