Linux管道符

news/2024/10/6 3:14:22/文章来源:https://www.cnblogs.com/xuruizhao/p/18280875

十五、管道符

管道符和grep命令结合的是最多的
管道符的标准定义:
管道是一种通信机制,常用语进程之间的通信。它表现出来的形式:将前一个的标准输出(stdout)作为后面命令的标准输入(stdin)

image-20231121234901537

利用grep和管道符来查看用户信息用户信息存储在 /etc/passwd中
我们自己创建的用户的ID号从1000开始
zwj:x:1002:1003::/home/zwj:/bin/bash
通过grep命令可以确定用户是不是存在
grep username /etc/passwd比方说我想要查找xuruizhao用户的信息
有两种方法
1、不用管道符
grep username /etc/passwd
2、用管道符
[root@bogon ~]# cat /etc/passwd | grep 'xuruizhao' 
xuruizhao:x:1001:1001::/home/xuruizhao:/bin/bash
管道符结合find命令搜索信息
找出系统中所有的.txt的文件,找到在/home目录下的文件
[root@bogon ~]# find / -name '*.txt'  ### 找到根目录下所有的txt文件
[root@bogon ~]# find / -name '*.txt' | grep '/home' ###  在、home目录下有哪些txt的文件
有一个问题:我们通过find命令找到的仅仅是一行行的文本,并不是把文件筛选出来了,也可以理解为是筛选出了文件名,并不是文件,我们不可以通过find命令找到的文件名去对对应的文件进行文件操作
[root@bogon opt]# find / -name '*.txt' | grep 'apple'  ## 这个命令是过滤出文件名中含有apple的.txt文件,并不是文件内容中含有apple的文件,因为我们不可以对通过find命令查找出的文件名对文件进行操作,我们只可以对find所找到的文本(文件名)进行操作
那么我们如何可以通过find命令去对文件的内容进行过滤,我们需要使用到xargs命令
grep的参数
1、-n  显示对应内容存在的行号
[root@localhost opt]# grep -n 'apple' ./a*
./a1:4:apple
./a2:1:apple
./a3:1:apple
2、-i  在查找内容时忽略大小写
[root@localhost opt]# grep -n -i  'apple' ./a*
./a1:2:APple
./a1:4:apple
./a2:1:apple
./a3:1:apple

【1】使用管道符来查看进程

ps -ef 是查看系统中所有的进程,我们可以将得到的所有的进程写入一个新文件中,再去通过grep和管道符进行筛选
如果系统中不存在这个进程,使用
ps -ef | grep 所需要查的进程  命令,如下图的结果,这并不是对应程序的进程,而是grep在使用时产生的临时进程,输出结果的第二个数字是进程的ID号,临时进程的ID号在每一次建立时是会不断发生变化的,由此可以判断出这是一个临时进程。
[root@localhost opt]# cat new.txt | grep -n 'root'
这样即可查看出想要查询的程序了

image-20231124090910790

【2】查看系统的端口

需要学习查看系统端口的命令,和ps -ef 一样,都是查看某一种系统资源的
netstat -tunlp ###  这个组合参数是查看系统上所有的端口信息
[root@localhost opt]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1490/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1351/sshd: root@pts 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      634/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1581/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1126/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1128/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1490/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      1351/sshd: root@pts 
tcp6       0      0 :::111                  :::*                    LISTEN      634/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1126/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1128/cupsd          
。。。。。

image-20231124095030306

【3】检查文件个数

比如检查/var/log 中log文件的个数[root@localhost opt]# find /var/log -name '*.log' | wc -l 
40判断出系统中用多少个txt文件
[root@localhost opt]# find /  -name '*.txt' | wc -l 
1207统计系统的统计用户数量
[root@localhost opt]# cat /etc/passwd | wc -l
46

【4】、管道符和xargs结合使用

将前一个命令得到结果通过管道符传递给xargs命令进行二次加工,xargs的二次加工是真正意义上的二次加工,而不是对前一个命令得到的结果的文本进行处理,而是对文本所对行的文件进行处理。
xargs可以与find命令、ls命令等进行搭配使用。-i 参数:可以使用{}来表示前一个命令得到的结果(文件)

1、通过xargs对文件进行批量备份

我们对/opt目录下的.txt文件进行备份
[root@bogon opt]# find /opt -name '*.txt' | xargs -i cp {} {}.apk
### 将find得到的结果传递给xargs 进行重命名操作,{}代表find得到的文件内容
[root@bogon opt]# ll
total 60
-rw-r--r--. 1 root root   159 Nov  9 14:52 1
-rw-r--r--. 1 root root     0 Nov 27 14:14 10.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 10.txt.apk
-rw-r--r--. 1 root root     0 Nov 27 14:14 1.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 1.txt.apk
-rw-r--r--. 1 root root     0 Nov 27 14:14 2.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 2.txt.apk
-rw-r--r--. 1 root root     0 Nov 27 14:14 3.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 3.txt.apk
-rw-r--r--. 1 root root     0 Nov 27 14:14 4.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 4.txt.apk
-rw-r--r--. 1 root root     0 Nov 27 14:14 5.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 5.txt.apk
-rw-r--r--. 1 root root     0 Nov 27 14:14 6.txt
-rw-r--r--. 1 root root     0 Nov 27 14:16 6.txt.apk
。。。

2、通过xargs对文件进行重命名

将/opt目录下的。txt文件改为.log文件
[root@bogon opt]# find /opt -name '*.txt' | xargs rename .txt .log {}
[root@bogon opt]# ll
total 8
-rw-r--r--. 1 root root   0 Nov 27 14:37 10.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 1.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 2.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 3.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 4.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 5.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 6.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 7.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 8.log
-rw-r--r--. 1 root root   0 Nov 27 14:37 9.log
-rw-r--r--. 1 root root  91 Nov 17 22:44 gushishi
drwxr-xr-x. 2 root root  51 Nov 27 14:38 he
-rw-r--r--. 1 root root 269 Nov  9 17:09 practice.tar.gz
drwxr-xr-x. 2 root root   6 Sep 10 16:18 rh
rename命令是重命名命令,
语法:rename 原字符串 新字符串 作用对象

3、查找系统中的txt文件中哪些存在apple内容

[root@bogon opt]# find /   -type f -name '*.txt' | xargs -i  grep -l 'apple' {}
grep的-l参数:显示出这个内容在哪一个文件中

【5】、grep命令

1、grep 关键字 filename

[root@bogon opt]# grep '有' gushi.txt 
借问酒家何处有

2、-n

显示行号
[root@bogon opt]# grep -n '有' gushi.txt ###  显示行号
5:借问酒家何处有
grep 不仅仅可以从文件中搜索数据,只要是文本他就可以进行搜索

3、grep从多个文件中搜索过滤

[root@bogon opt]# grep 'apple' ./*  ### grep是不可查目录的
./a:apple
./a1:apple
./a2:apple
./a3:apple
grep: ./abc: Is a directory
grep: ./he: Is a directory
grep: ./rh: Is a directory

4、 -i

[root@bogon opt]# grep -i 'apple' ./*
./a:apple
./a1:APple
./a2:apple
./a3:apple
grep: ./abc: Is a directory
grep: ./he: Is a directory
grep: ./rh: Is a directory

5、-R

递归查找
[root@bogon opt]# grep -Rn 'passwd' /var/log

6、-v参数

反向过滤
[root@bogon opt]# df -Th | grep -v tmp
Filesystem            Type      Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs        37G   20G   18G  52% /
/dev/mapper/rhel-home xfs        19G  162M   18G   1% /home
/dev/nvme0n2p2        xfs       495M   29M  466M   6% /mnt/xfs
/dev/sr0              iso9660    13G   13G     0 100% /mnt/cdrom
/dev/nvme0n2p1        ext4      189M   14K  175M   1% /mnt/ext
/dev/nvme0n1p1        xfs      1014M  198M  817M  20% /boot

7、grep和正则结合使用

*表示以什么开头
$表示以什么结尾
^$表示空行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/736634.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#数据结构与算法入门教程,值得收藏学习!

前言 最近看到DotNetGuide技术社区交流群有不少小伙伴提问:想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的?,今天大姚给大家推荐2个开源、免费的C#数据结构与算法入门教程,值得收藏学习! 数据结构与算法的作用 数据结构与算法在计算机科学中具有不…

多线程下的网格生成及性能分析

前言 概述通过多线程方式实现上千个对象的网格生成,并观察运行效率。多线程通过Thread来进行,每个线程中执行GenerateMeshData方法,在方法中对不同种类的网格进行顶点和三角面序列的计算。首先设置简单立方体,之后改为柏林噪声下生成的复杂地形。主线程限制 Unity设计之初就…

公众号软件链接

链接:https://wwt.lanzouq.com/b0174n6pc密码:gb5dhttps://wwt.lanzouq.com/b0174pdab密码:b357韩科信息咨讯每日科技资讯,致力于新颖、古怪网站分享与实用技巧!谢谢大家支持,您的"在看"、“分享”是我们不断进步之动力! 获取资源扫码关注我们 A world of wonde…

android 安装CA证书

android 安装CA证书 提取证书计算证书的hash值 C:\Users\czl\Downloads>"C:\Program Files\Git\usr\bin\openssl.exe" x509 -inform PEM -subject_hash_old -in charles.pem b682a732 -----BEGIN CERTIFICATE----- MIIFRjCCBC6gAwIBAgIGAY1GZhqIMA0GCSqGSIb3DQEB…

全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解-提高代码可读性的利器

本文对类型注解的定义、使用原因进行了基本介绍,同时对使用typing模块实现类型提示和类型检查进行了基本讲解,通过使用类型注解可以让开发者更清晰地了解函数和变量的预期类型。全网最适合入门的面向对象编程教程:07 类和对象的 Python 实现-类型注解-提高代码可读性的利器 …

训练记录(Jul.)

7/2 AT_abc217_f *提高+/省选- 设 \(f_{l, r}\) 为把 \([l, r]\) 消去的方案数。 P3607 [USACO17JAN] Subsequence Reversal P *省选/NOI- CF1922F *2500 状态很好想,之前是因为转移成环所以没补,结果发现也可以没环。 \(f_{l, r, x}\) 表示把 \([l, r]\) 推平成 \(x\) 的…

Ubuntu24.04下Docker安装与配置

安装docker 官方教程加上代理 sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringscurl指定代理 sudo curl -x http://127.0.0.1:7897 -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.…

idea中配置Maven

主要修改两个地方:如上图。 注意: 1、如果本地仓库地址不变化,只有一个原因,就是maven/conf/settings.xml配置文件编写错误!仔细检查即可! 2、一定保证User settings file对应之前修改的settings.xml的路径,若 不一致,选中Override复选框,手动选择配置文件

linux tinydrm vs fbtft 性能对比测试

linux tinydrm vs fbtft 性能对比测试 本文将通过若干组对照试验,然后根据实验得出的数据,计算在使用fbdev的情况下,tinydrm相较于fbtft的提升幅度。免责声明:本人时间、精力有限,实验中的测试数据量较小,所以不建议将本文中的数据用于比较严谨的场景。测试环境开发板 树…

七月二日 python完成简单围棋游戏

第二天 最近,数据结构的小学期,这两天主要是完成我自己的课题设计完成围棋游戏。 【题目43】围棋游戏 设计一个简易的围棋游戏。盘面有纵横各十九条等距离、垂直交叉的平行线,共构成361个交叉点(以下简称为"点")。棋子分黑白两色。对局双方各执一色棋子,黑先白…

【vscode】vscode通过端口访问本地html页面(Live Server)

在学习mapbox过程中,发现有的图片,如果直接浏览器路径打开html文件,图片不出来,报错,得用服务的形势来访问!!!相信坚持的力量,日复一日的习惯.

基于VLC可见光通信的室内光通信信道信噪比分析matlab仿真

1.算法运行效果图预览2.算法运行软件版本 matlab2022a3.部分核心程序Pr = POW_all.*H; % 接收功率(毫瓦) POW_r = Pr./1000; % 接收功率(瓦) Pr_dbm = 10.*log10(POW_r); % 接收功率(dBm)%信噪比(SNR Ib = 202e-6; % 背景光子通量 No = 2…