在Linux中,以及一系列类Unix的系统中,都秉承一种习惯:巧而精。
那么在使用Linux系统中,使用最多的就是命令了,我们的命令其实也是做的非常的精巧,但是依然可以使用精巧的命令来实现强大的功能,这里就衍生出了:管道
什么是管道呢?
可以简单理解为连接命令的桥梁,或者通道。管道,可以将第一个命令的输出作为第二个命令的输入,通过管道来传递给第二个命令使用,然后又可以将第二个命令的输出作为第三个命令的输入,以此类推。其中,使用 “ | ”表示一个管道。
下面我举个例子:
管道的实战作用
上面的例子比较普通,可能不太能够引起你的注意。
那么在我们编译文件,遇到报错或者警告信息的时候,我们可以从信息中提取到报错的位置,我们可以使用find
结合grep
命令来知道是在那个文件中的第几行。这个时候就要用到我们的管道功能。例如:
find . -name "*.c" | xargs grep "hello"
这里也给大家分析一下这条命令:
第一部分:find . -name "*.c"
.表示当前目录,-name 是参数
第二部分:| xargs
| 是管道,xargs 是参数指将第一部分输出作为第三部分命令的参数。
第三部分:grep "hello"
下面给大家举个例子,加上xargs 与没有加xargs的区别:从上图我们可以看到明显的区别就是,没有加上参数xargs的输出会导致系统会查找出文件的名字 hello.c,这很明显不是我们想要的结果,那么你可能会说这里是碰巧不能说服到你,但是如果在实战中,可能真的会存在与你相同名字的文件。
那么我们很有必要要理解,xargs参数的作用:
xargs能够告诉下一个命令,第一部分命令的输出是要作为参数传递给下一个命令使用的,而不是输出等于下一个命令的输入。
解释一下上面命令给大家听可能能够让大家更加容易理解:
使用find
命令找到当前目录所有的.c文件以参数的形式传递给grep
命令来查找"hello"。
以上内容纯属本人小白初学Linux系统的一次学习笔记,如果对您有所帮助,我很高兴。若有写错或者说错的地方,请您多多包涵,望有更多大神来指点迷津,谢谢。