书接上文,我们来看一下管道,管道在Linux中用的非常多,几乎我们在编写shell脚本的过程中会不可避免的用到管道。首先我们思考一个问题。
- 将系统上所有的软件包列出来,然后去搜索java相关的软件包。
- 解决方法:使用命令列出系统已有的软件包,然后把结果重定向到文件中,然后在文件中搜索java。
- rpm -qa > all_soft.txt,再利用vim去搜索java。
通过上面三步也可以找到系统中的java相关的软件包。但是如果我们使用管道就可以更快捷的实现了。
- 列出所有的软件包,然后将结果传递给后续命令处理。
- rpm -qa | grep java
我们通过rpm -qa列出所有的软件包,然后通过管道符一个竖线将结果传递给后续命令处理,中间结果就不保存了。我们只关注所有软件中与java相关的软件包,其他的我们不关注。我们通过管道将前面命令执行的结果作为后面的命令的输入来传递给它。我们通过执行 grep 某一个字符 可以在某一个文件中找出每一行中包含某一字符。
然后我们可以将上述的结果重新作为输出传递给后续命令,作为后续命令的输入。比如我们想统计以下前面的执行结果有多少行。我们可以执行:
rpm -qa | grep java | wc -l
所以现在管道的定义就更容易理解了。
管道的定义
- 将一个命令的输出作为另一个命令的输入。
- 从某种意义上来说,是重定向的简易实现。
好了,管道的定义及用法就说到这里了。如果各位有补充请留言,我验证之后完善文章。谢谢!



