Linux之管道

文章介绍了Linux系统的管道功能,包括操作符号|,作用是将命令输出作为另一个命令的输入。讲述了匿名管道和命名管道的区别,并提供了多个实际案例,如用户UID排序、CPU占用进程统计、shell类型统计等,展示了管道在Linux命令行中的强大应用。
摘要由CSDN通过智能技术生成

目录

Linux之管道

操作符号

作用

用法

管道符使用场合

匿名管道与命名管道的区别

如何创建命名管道

案例举例

案例1 --- 将/etc/passwd中的用户按UID大小排序

 案例2 --- 统计出最占CPU的5个进程

 案例3 --- 统计当前/etc/passwd中用户使用的shell类型

 案例4 --- 统计网站的访问情况 top20

 案例5 --- 打印当前所有IP

案例6 --- 打印根分区已用空间的百分比(仅打印数字)


Linux之管道

操作符号

        “|” --- 管道是由符号 “|” 隔开的若干条命令组成的序列

作用

        将前一个命令的输出通过一个无形的“管道”作为下一个命令的输入,即实现将前一个命令输出的数据结果作为后一条命令所需要的数据源参数

用法

        command1 | command2 |command3 |.....

管道符使用场合

         当输出内容比较多时,为了方便浏览,竟可能输出内容,通过管道操作符,传递给more命令来分页查看,也可传递给grep命令实现对指定对象的查看

注意:

        管道命令只能处理签一个命令正确输出,不处理错误输出

        管道命令右边命令,必须能够接收准输入流命令才行

        查看所有安装的软件包,过滤包含httpd的包

rpm -qa | grep 'httpd'

匿名管道与命名管道的区别

        匿名管道由pipe函数创建并打开

        命名管道由mkfifo函数创建,打开用open 

        FIFO(命名管道)与 pipe (匿名管道)之间唯一的区别在它们创建与打开的方式不同,一量这些工作完成之后,它们具有相同的语义。

如何创建命名管道

        在Linux系统下,命名管道可由两种方式创建(假设创建一个名为 “fifoexample” 的有名管道):
                mkdio("fifoexample","rw")
                mknod fifoexample p

案例举例

案例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 --- 统计出最占CPU5个进程

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}'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

White乄joker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值