本质上来说,管道就是一种特殊的重定向,也就是对一个命令的输出进行
管道连接(即重定向),用作下一个命令的输入。在 Linux 环境中,命令协作
最常用方式就是构造命令管道。
图 1 命令管道
command1 正确输出,作为 command2 的输入然后 comand2 的输出
作为, comand3 的输入, comand3 输出就会直接显示在屏幕上面了。事实上
在两个命令之间使用 |(管道)操作符就是将第一个命令的 stdout 定向到第二
个命令的 stdin,可以通过添加更多的命令和更多的管道操作符来构造长管道来
完成更复杂的任务。
注意 管道命令只处理前一个命令正确输出,不处理错误输
出;
管道命令右边命令,必须能够接收标准输入流命令才
行。
常用来作为接收数据管道命令有: sed, awk, cut, head, tail,top, less, more,
wc, join, sort, split 等等,都是些文本处理命令。
管道的另外一种形式称为命令替换。实现方法是将您希望使用其结果
的命令封闭在反单引号(`[1])中或者封闭在 $( 和 ) 之间。
重定向与管道在使用时候很多时候可以通用,其实,在 shell 里面,经常是
【条条大路通罗马】的。一般如果是命令间传递参数,还是管道的好,如果处
理输出结果需要重定向到文件,还是用重定向输出比较好。
[1] 这个符号在键盘的数字键 1 前面