shell编程基础(第14篇:管道符号的妙用)

前言

    类Unix系统中,有非常多的命令,如果每个命令都只能独立运行,无法发挥他们的作用,前辈们利用管道,把命令组合在一起使用,管道也是进程间通信的方式之一

管道符

    在shell编程中,管道符用竖线字符(|)表示,利用管道将第一个命令的标准输出作为第二个命令的标准输入,该符号位于键盘上Backspace键的下面,记得要按下Shift键输入,下面请跟我打几个管道符出来

||||||||||||||||||||||||||||||||||卷死你|||||||||||||||||||||||||||||||

举个例子:echo与grep利用管道组合在一起

$ echo baby | grep b

输出结果:

baby 

echo命令会将参数原样输出到标准输出中

grep命令可接受标准输入,后面的参数b是指定的正则表达式模式,grep会将匹配的信息写入到标准输出中

上面的代码中,echo命令将标准输出中的内容baby,通过|管道符号传入grep命令中,grep的第一个命令行参数b,指的是正则表达式模式,对于grep命令,由于内容baby中含有b,符合正则表达式,所以我们能看在控制台看到结果baby,这个baby已经是grep命令的标准输出了

baby

再举个例子:连续多个管道的组合

echo baby | grep b | wc -l

输出结果:

1

输出结果是1,俺来给解释一下:

echo命令可以将参数baby,原样输出到标准输出

grep命令则是只输出匹配正则表达式b的标准输出

wc命令则是显示行数

所以你看到的1,代表输出内容有1行

管道可以将多个命令,理论上是不限制数量的,组合在一起使用

前一个命令的标准输出作为下一个命令的标准输入,一直到最后一个命令,结合例子中

echo的标准输出作为grep的标准输入,grep的标准输出又作为wc的标准输入,最后的1,是wc命令的标准输出结果

总结

1、介绍了管道符号的基本使用

2、一个命令能否放在管道后面,取决于它是否接受标准输入,比如grep、wc、awk都可以放到管道的后面,因为能接受标准输入,比如ls、mkdir显示不能放到管道的后面,它们不能接受标准输入

3、 0代表标准输入、1代表标准输出、2代表标准错误,正常情况下键盘是标准输入、屏幕是标准输出与标准错误

4、|这个符号,能将2个,后者多个命令结合在一起,都是bash解释器作的好事,细节先不提了

你可能感兴趣的:(Linux,shell脚本,shell)