目录
Linux之管道
操作符号
作用
用法
管道符使用场合
匿名管道与命名管道的区别
如何创建命名管道
案例举例
案例1 --- 将/etc/passwd中的用户按UID大小排序
案例2 --- 统计出最占CPU的5个进程
案例3 --- 统计当前/etc/passwd中用户使用的shell类型
案例4 --- 统计网站的访问情况 top20
案例5 --- 打印当前所有IP
案例6 --- 打印根分区已用空间的百分比(仅打印数字)
Linux之管道
操作符号
“|” --- 管道是由符号 “|” 隔开的若干条命令组成的序列
作用
将前一个命令的输出通过一个无形的“管道”作为下一个命令的输入,即实现将前一个命令的输出的数据结果作为后一条命令所需要的数据源参数
用法
管道符使用场合
当输出内容比较多时,为了方便浏览,竟可能输出内容,通过管道操作符,传递给more命令来分页查看,也可传递给grep命令实现对指定对象的查看
注意:
管道命令只能处理签一个命令正确输出,不处理错误输出
管道命令右边命令,必须能够接收准输入流命令才行
查看所有安装的软件包,过滤包含httpd的包
rpm -qa | grep 'httpd'
匿名管道与命名管道的区别
匿名管道由pipe函数创建并打开
命名管道由mkfifo函数创建,打开用open
如何创建命名管道
案例举例
案例1 --- 将/etc/passwd中的用户按UID大小排序
[root@localhost ~]# sort -t":" -k3 -n /etc/passwd --- 以 : 分隔,将第三列按字数升序
[root@localhost ~]# sort -t":" -k3 -n /etc/passwd -r --- 降序
[root@localhost ~]# sort -t":" -k3 -n /etc/passwd | head --- 显示前十行
解析:
按照以冒号分隔的第三列(即用户 ID)进行数字排序,并输出前十行
案例2 --- 统计出最占CPU的5个进程
ps aux --sort=-%cpu |head -6
案例3 --- 统计当前/etc/passwd中用户使用的shell类型
思路 --- 取出第七列(shell) | 排序(把相同归类)| 去重
awk -F: '{print $7}' /etc/passwd
awk -F: '{print $7}' /etc/passwd | sort
awk -F: '{print $7}' /etc/passwd | sort | uniq
awk -F: '{print $7}' /etc/passwd | sort | uniq -c
解析:
从/etc/passwd文件中获取第7个字段(即用户的shell类型),然后使用sort命令排序,最后使用uniq命令统计每种shell类型出现的次数。其中,-F选项指定了字段分隔符为“:”,|符号表示将前面命令的输出作为后面命令的输入。
案例4 --- 统计网站的访问情况 top20
ss -an |grep :80|awk -F":" '{print $8}' |sort |uniq -c
解析:
打印所有访问的连接 | 过滤访问网站的连接 | 打印用户的IP | 排序 | 去重
案例5 --- 打印当前所有IP
ip addr |grep 'inet' |awk '{print $2}' |awk -F"/" '{print $1}'
解析:
- ip addr:查看网络接口的配置信息。
- grep 'inet':筛选出包含 "inet" 的行,即 IPv4 或 IPv6 地址行。
- awk '{print $2}':提取第二列,即 IP 地址部分。
- awk -F"/" '{print $1}':以 "/" 为分隔符,提取分割后的第一部分,即 IP 地址。
案例6 --- 打印根分区已用空间的百分比(仅打印数字)
df -P |grep '/$' |awk '{print $5}' |awk -F"%" '{print $1}'