• 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解释器作的好事,细节先不提了

  • 相关阅读:
    Worthington过氧化物酶活性的6种测定方法
    Android渲染系列之原理概述篇
    Android 设置系统的时间
    python 跨文件的全局变量修改
    【c++】智能指针
    shell脚本入门-多命令处理与变量
    谷粒商城 (十六) --------- 商品服务 API 品牌管理 ② OSS 云存储开通整合
    MySQL 中读写分离数据延迟
    GAME (HDU)(博弈论)
    Docker
  • 原文地址:https://blog.csdn.net/cadi2011/article/details/133150445