欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Linux学习笔记】22:Bash基础-管道符"|"

程序员文章站 2022-07-13 16:35:44
...

管道符是很常用的Shell功能,在这之前先学习几个多命令顺序执行的符号。

先说多命令执行符

①顺序

命令1 ; 命令2

按顺序,多个命令顺序执行。
【Linux学习笔记】22:Bash基础-管道符"|"
当想执行多个需要等待的命令时可以用分号免去等待输入,还可以用”date;命令;date”的方式看看某条命令执行了多长时间。

②逻辑与

命令1 && 命令2

按顺序,有命令出现执行不正确时,后面的命令不会执行。
【Linux学习笔记】22:Bash基础-管道符"|"
当后面的命令需要前面的命令正确执行做支持时(如环境搭建),可以用这种方式免去等待输入。

③逻辑或

命令1 || 命令2

按顺序,有命令执行正确时,后面的命令不会执行。
【Linux学习笔记】22:Bash基础-管道符"|"
当一件事可以有多个命令相互代替,不确定哪个可以正确执行时,可以用这种方式免去等待输入。

*判断一条命令有没有正确执行

[aaa@qq.com ~]# ls && echo yes || echo no
anaconda-ks.cfg  install.log         no.log  shuchu
hello.sh         install.log.syslog  ok.log
yes

因为输出总是yes/no,所以这种方式可以给计算机程序检测命令的结果是正确还是错误了,可以用在脚本里。在Shell中实际上还有其它的判断方法。

管道符”|”

命令1 | 命令2

命令1的正确输出作为命令2的操作对象。
【Linux学习笔记】22:Bash基础-管道符"|"
这个例子是用ls -l列出的详细信息给more命令做分屏输出了,在more中按q可以退出。
又如,用

[root@localhost ~]# netstat -an

可以查看所有的网络连接情况。显示出的内容上边的部分(下面第一张图)是网络端口,下面的部分(下面第二张图)是网络程序。
【Linux学习笔记】22:Bash基础-管道符"|"
LISTEN表示端口被监听,等待被人访问。ESTABLISHED表示有人正在使用这个端口(图中是远程工具的22端口)。
【Linux学习笔记】22:Bash基础-管道符"|"
也就是说只要有一个ESTABLISHED,就表明有一个客户端正连接在这个服务器上,因此可以用管道符去查找这些信息行:

[root@localhost ~]# netstat -an | grep "ESTABLISHED"
tcp        0     52 192.168.0.112:22            192.168.0.104:2367          ESTABLISHED

从而统计服务器上连接了哪些人。还可以将这个结果再接一个管道符,用wc -l去处理这个结果,就知道有多少行(人)连接了这个服务器,而不去关心其它信息了:

[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l
1

这在服务器的使用中是很常用的。