Linux 命令管道介绍

embedded/2024/9/23 11:13:14/

今天给伙伴们分享一下Linux 命令管道,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

一、进程管道技术

  • 管道操作符号 “|” 连接左右两个命令, 将左侧的命令的标准输出, 交给右侧命令的标准输入

图片

  • 格式: cmd1 | cmd2 […|cmdn]

1、匿名管道

[root@edenluo.com ~]# ll /dev/ | less
[root@edenluo.com ~]# ps aux | grep 'sshd'
[root@edenluo.com ~]# rpm -qa  | grep 'httpd'   //查询所有安装的软件包,过滤包含httpd的包
[root@edenluo.com ~]# yum list  | grep 'httpd'

2、命名管道(了解)

创建命名管道文件:
[root@edenluo.com ~]# mkfifo /tmp/tmpfifo
[root@edenluo.com ~]# file /tmp/tmpfifo
/tmp/tmpfifo: fifo (named pipe)把指令结果放入管道先:
[root@edenluo.com ~]# rpm -qa > /tmp/tmpfifo 新建一个终端从命名管道内拿内容:
[root@edenluo.com ~]# grep bash /tmp/tmpfifo 
bash-4.1.2-14.el6.x86_64把指令结果放入管道先:
[root@edenluo.com ~]# cat /etc/passwd > /tmp/tmpfifo 新建一个终端从命名管道内拿内容:
[root@edenluo.com ~]# grep root /tmp/tmpfifo 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

3、管道练习实例

1、案例1: 将/etc/passwd 中的用户按 UID 大小排序
[root@edenluo.com ~]# sort -t":" -k3 -n /etc/passwd 
[root@edenluo.com ~]# sort -t":" -k3 -n /etc/passwd -r 
[root@edenluo.com ~]# sort -t":" -k3 -n /etc/passwd |head-t: 用来指定分隔符   -k  指定列数   -n  以数值的方式排序
2、案例2: 统计出最占CPU的5个进程
[root@edenluo.com ~]# ps aux --sort=-%cpu |head -6-%cpu 是从大到小(倒序) +%cpu 从小到大(正序)
3、案例3:统计当前/etc/passwd中用户使用的shell类型(目前了解)
思路:取出第七列(shell) | 排序(把相同归类)| 去重
[root@edenluo.com ~]# awk -F: '{print $7}' /etc/passwd
[root@edenluo.com ~]# awk -F: '{print $7}' /etc/passwd |sort
[root@edenluo.com ~]# awk -F: '{print $7}' /etc/passwd |sort |uniq 
[root@edenluo.com ~]# awk -F: '{print $7}' /etc/passwd |sort |uniq -c131 	/bin/bash1 	/bin/sync1 	/sbin/halt63 	/sbin/nologin1 	/sbin/shutdown
-F: 	指定字段分隔符
$7 		第七个字段
4、案例4: 统计网站的访问情况 top 20(目前了解)
思路:打印所有访问的连接 | 过滤访问网站的连接 | 打印用户的IP | 排序 | 去重
[root@edenluo.com ~]# yum -y install httpd
[root@edenluo.com ~]# systemctl start httpd
[root@edenluo.com ~]# systemctl stop firewalld[root@edenluo.com ~]# ss -an |grep :80 |awk -F":" '{print $8}' |sort |uniq -c4334 192.168.0.661338 192.168.10.111482 192.168.10.12544 	 192.168.10.1833035 192.168.10.213375  192.168.10.35362  192.168.10.39[root@edenluo.com ~]# ss -an |grep :80 |awk -F":" '{print $8}' |sort |uniq -c |sort -k1 -rn |head -n 20 
5、案例5: 打印当前所有IP(目前了解)
[root@edenluo.com ~]# ip addr |grep 'inet ' |awk '{print $2}' |awk -F"/" '{print $1}'
127.0.0.1
192.168.2.115
6、案例6:打印根分区已用空间的百分比(仅打印数字)(目前了解)
[root@edenluo.com ~]# df -P |grep '/$' |awk '{print $5}' |awk -F"%" '{print $1}'

4、tee管道技术(了解)

图片

  • Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。

  • tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

语法

[root@edenluo.com ~]# tee [-ai][--help][--version][文件...]

参数

  • -a或–append  附加到既有文件的后面,而非覆盖它.
  • -i或–ignore-interrupts  忽略中断信号。
  • –help  在线帮助。
  • –version  显示版本信息。

实例

[root@edenluo.com ~]# date > date.txt 
[root@edenluo.com ~]# date |tee date.txt

使用指令"tee"将用户输入的数据同时保存到文件"file1"和"file2"中,输入如下命令:

[root@edenluo.com ~]# tee file1 file2                   #在两个文件中同时输入内容内容 

以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示:

My Linux                        #提示用户输入数据  
My Linux                        #输出数据,进行输出反馈  

此时,可以分别打开文件"file1"和"file2",查看其内容是否均是"My Linux"即可判断指令"tee"是否执行成功。

5、参数传递xargs(了解)

  • 将参数列表转换成小块分段传递给其他命令
  • 读入stdin的数据转换为参数添加至命令后面
  • 让一些不支持管道的命令可以使用管道。
  • 管道命令符能让大家能进一步掌握命令之间的搭配使用方法,进一步提高命令输出值的处理效率。
  • xargs 是给命令传递参数的一个过滤器,可以将管道或标准输入的数据转换成参数,默认的命令是 echo
[root@edenluo.com ~]# grep "/sbin/nologin" /etc/passwd | wc -l
33
[root@edenluo.com ~]# head -5 /etc/passwd|tail -1
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
使用grep过滤输出信息
[root@edenluo.com ~]# ls -l /etc |grep pass
-rw-r--r--   1 root root   4653 Dec  2 15:54 passwd
-rw-r--r--.  1 root root   4606 Dec  2 15:54 passwd-
-rw-r--r--.  1 root root   1454 Sep 23  2014 passwd.OLD
//管道和标准输出以及标准错误输出, 使用普通用户执行如下命令
[root@edenluo.com ~]# find /etc/ -name "p*"|grep passwd
[root@edenluo.com ~]# find /etc/ -name "p*"|grep passwd > a
[root@edenluo.com ~]# find /etc/ -name "p*"|grep passwd > b
[root@edenluo.com ~]# find /etc/ -name "p*"|grep passwd &> ab[root@edenluo.com ~]# find  .  -name wing.txt | xargs  -i cp {} /root/Desktop
加-i 参数直接用 {}就能代替管道之前的标准输出的内容[root@edenluo.com ~]# find  .  -name wing.txt | xargs  -i cp {} /root/Desktop
防止被查找到的文件过多,导致内存溢出错误

i缺省使用{}作为占位符

[root@localhost ~]# echo "a b c d aa bb abc"|xargs -t touch 
[root@edenluo.com ~]# ls *a | xargs -i echo {}

通过-I指定占位符,自定义占位符

[root@edenluo.com ~]# ls *a | xargs -I % echo %
[root@localhost ~]# echo "file1 file2 file3"|xargs -t -I % sh -c 'touch %;ls -l %'

二、命令管道实战练习

1、简述输出/输入重定向的意义。

2、使用 > ,>> , 2>,2>> , <, 练习重定向的使用。

3、简述管道的作用。

4、举例练习管道 | 和xargs的使用。

5、破解centos7/8密码

grub界面--> e --> vmlinuz那行最后添加 init=/bin/sh --> ctrl+x --> # mount -o remount,rw / 

如果有版帮助,帮忙免费的关注一下**公众号「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。


http://www.ppmy.cn/embedded/99528.html

相关文章

Android T adout replace bootanimation

idea_1:use ota replace bootanimation.zip idea_2:创建一个新的分区,(用于存放bootanimation.zip)可以让上层读写. idea_3:su cp 前提条件&#xff1a;userdebug版本, 默认关闭selLinux,可root //df 查看设备分区情况,有些分区系统是不让去写的 adb shell c4_t:/ $ df Fil…

XSS之xss game

链接如下: Challenges 1.Ma Spaghet! 源码; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams.get(somebody) || "Somebody") " Toucha Ma Spaghet!" </…

Mysql双主双从

双主双从 1.安装Mysql1.1 查看linux版本1.2 下载Mysql安装包1.3 上传并解压1.4 安装Mysql1.5 编辑端口号1.6 Mysql启动命令1.7 更新密码 2.搭建Mysql主从复制2.1 搭建Master主服务器2.1.1 修改mysql配置文件2.1.2 重启Mysql服务2.1.3 创建Slave用户, 并授权2.1.4 查看主服务器当…

Qt-控件概述(9)

目录 如何去学习Qt 如何看待控件 发展背景 如何去学习Qt Qt是一个开发平台&#xff0c;所有我们侧重的方向主要为使用&#xff0c;也就是说我们要站在巨人的肩膀上去学习这个技术 如何看待控件 控件这个词&#xff0c;其实就是专业化后的单词&#xff0c;不要被这种语术吓…

区块链变革:Web3时代的数字化前沿

随着科技的飞速发展&#xff0c;数字化正在深刻影响着我们生活的方方面面。区块链技术作为一种新兴的去中心化技术&#xff0c;正成为推动这一变革的重要力量。特别是在Web3时代&#xff0c;区块链的作用不仅仅局限于加密货币&#xff0c;而是延伸到了各个领域&#xff0c;成为…

香港服务器IIS网站怎么实现应用程序初始化和预加载

在香港服务器上使用 IIS 来初始化和预加载网站应用程序&#xff0c;可以显著提高网站的响应速度和性能&#xff0c;尤其是在首次访问时。以下是配置步骤&#xff1a; 1. 启用应用程序初始化 打开 IIS 管理器。 选择你要配置的网站或应用程序池。 双击 "应用程序初始化&quo…

ClickHouse与Elasticsearch:大数据时代的两大引擎比较

目录 1. 基本介绍 ClickHouse Elasticsearch 2. 优劣势分析 ClickHouse的优势 ClickHouse的劣势 Elasticsearch的优势 Elasticsearch的劣势 3. 应用案例 4. 总结与选择建议 随着大数据技术的不断发展&#xff0c;企业对数据分析和实时搜索的需求也日益增长。ClickH…

Python入门级 序列全集 [ 继上篇 进阶版 持续更新中哞哞哞!!! ]例题较多

本文主要结合例题介绍了序列【常用函数、可迭代对象】&#xff0c;字典【函数、写法、定义、视图对象】&#xff0c;集合【常用函数】&#xff0c;运算符优先级。这几种数据集合在Python中也是蛮重要的&#xff0c;对于新手比较友好。 本文例题大多来自哔站up主鱼C-小甲鱼【Pyt…