本文摘抄自《Linux 命令、编辑器与shell编程》第5章
ISBN:9787302139447
定价:98元
5.2.4 管道
shell使用管道将一条命令的标准输出连接到另一条命令的标准输入。管道(有时称为管线)的功能类似于下面的过程:首先将一条命令的标准输出重定向到一个文件,然后将该文件作为另一条命令的标准输入。管道不需要单独处理每条命令,并且不需要中间文件。管道的符号为一条竖线(|),命令行语法格式为:
command_a [arguments]|command_b [arguments]
上面的命令行得到的结果与下面这组命令行得到的结果相同:
command_a [arguments]>temp
command_b [arguments]<temp
rm temp
第1行将command_a 的标准输出重定向到中间文件Temp中,第2行将temp 做为comand_B的标准输入,最后一行将temp删除。使用管道不仅可以简化输入,而且效率更高,因为它不创建临时文件。
任何Linux实用程序都可以使用管道,从命令行上指定的文件中接受输入,也可以从标准输入接受输入。可以使用管道和仅从标准输入接受输入的实用程序,如实用程序tr(translate)就只能从标准输入接受输入。使用tr最简单的模式如下:
tr string1 string2
tr 从标准输入接受输入,查找与string1匹配的字符,找到一个匹配的字符就将string1中的字符替换为string2中的对应字符。下面的例子,tr将文件abstract中的字母a,b,c分别替换为A,B,C.
$cat abstract | tr abc ABC
$tr abc ABC <abstract