grep
grep是对数据进行过滤查找关键字
grep作用是,从文件中(而非文件夹)匹配出存在该关键字的那一行信息。
语法 :
grep 参数 '关键字' 文件名
测试数据
I teach linux.
I like python.
My qq is 877348180.
My name is chaoge.
Our school website is http://yuchaoit.cn。
Where is my girl friend.
Who is your boy friend.
My phone number is 15233334444.
1.找出存在My字符的行
-n 参数,显示存在该关键字的行号
grep -n 'root' /etc/passwd
-i grep忽略大小写
无论大小写,找出/etc/passwd文件中,包含的root信息
grep -i 'root' /etc/passwd
利用grep找出nginx软件,配置文件中,定义的网站监听端口号
[root@localhost opt]# grep -n -i 'listen' /etc/nginx/nginx.conf
39: listen 80;
管道符
管道符,在linux中的表达符号是
| (快捷键shift + \)
管道符得标准定义
管道是一种通信机制,通常用于进程间的通信。
它表现出来的形式将==前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)==。

利用grep和管道符,来查看系统用户信息
1.找出chaoge用户的信息
/etc/passwd 是系统的用户信息存放文件
在这个文件中,是用户通过命令创建的用户,id号是从1000开始的,比如
useradd yejinyang
添加完之后,就会在这个文件中生成一行信息
grep
[root@localhost opt]# id yejinyang
uid=1001(yejinyang) gid=1001(yejinyang) groups=1001(yejinyang)
[root@localhost opt]#
[root@localhost opt]# grep 'yejinyang' /etc/passwd
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash
管道符
#命令1 | 命令2
#命令1,拿到用户文件信息 | 交给grep再去过滤
[root@localhost opt]# cat /etc/passwd | grep 'yejinyang'
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash
[root@localhost opt]#
[root@localhost opt]# grep 'yejinyang' /etc/passwd
管道符常见用法
检查进程
1.查看系统进程信息的命令
ps -ef # -e 显示所有的进程信息 -f 格式化显示出进程的id号,等其他信息
2.上述命令,找到了一堆进程,如何过滤出我们要的信息呢?
学习如何,正确使用 grep 和管道符,去过滤机器上某个进程,判断某个进程是否存在
1.找出vim的进程
2.找出nginx的进程




检查端口
1.需要学习,检查系统端口的命令,这个命令,和ps -ef 一样,是查看系统某资源信息
netstat -tunlp # 这个组合参数,是查看系统上,所有的端口信息
netstat -tunlp
2. 过滤出,机器上,和ssh远程连接的端口信息,提示程序名叫ssdh,或者端口号是22
结合查看端口的命令+ 管道符+ grep,实现,高效的过滤
netstat -tunlp | grep 'nginx'
统计文件数量
1.先找出/var/log下所有的log文件,find是递归搜索,找出所有的log后缀文件,不放过一个
find /var/log -name '*.log' | wc -l

统计系统用户数量
cat /etc/passwd | wc -l
管道符,结合find命令搜索信息
1.找出系统中所有的txt文件,然后再过滤出,其中包含了apple信息的txt是哪些
find / -name '*.txt' # 这个命令找出的,每一个txt文件的名字吧,并且就是,一堆,一行一行的文本而已2.我要判断出,这些文件,哪一个是包含了apple字符串内容的
一个个的去grep这些文件才行!!!

xargs
作用是,简单的说 就是把其他命令的给它的数据,传递给它后面的命令作为参数
先抛出需求

语法如下
命令1 | xargs 选项
选项
-i 用 {} 代替传递的数据
xargs实现批量备份

xargs实现批量重命名

全系统中搜索,包含某数据的文件名
grep -l 显示匹配到数据的的文件名
[root@localhost tmp]# find / -type f -name '*.txt' | xargs -i grep -l 'xiake' {}
/var/log/nginx/mima.txt
作业及拓展:
找出系统上所有的txt、log、png⽂件,且显示其⽂件详细信息。(⼀条命令完成)
[root@server ~]#find / -type f -name "*.txt" -o -name "*.log" -o -name "*.png" | xargs ls -l
找出系统中超过1M的txt,并且显示其⽂件具体容量信息。(⼀条命令完成)
[root@server ~]#find / -type f -size +1M -name "*.txt" | xargs du -sh
请找出 /var/log ⽬录下哪些⽂件中含 passwd 信息。(提示,查⼀下 -R 参数)
# -n显示行号,w整个单词,-l显示该文件名
[root@server ~]#find /var/log/ -type f | xargs grep -w -n -l "passwd"
请备份 /var/log 下所有的 .log ⽂件,备份到 /var/log/bak_log/ ⽬录下
[root@server ~]#find /var/log/ -type f -name "*.log" | xargs -i cp {} /var/log/bak_log/
解释下什么是⽂件创建时间,访问时间,修改时间(代码演示)
Linux文件系统每个文件都有三种时间戳:
-
访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。
-
修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。
-
属性变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
[root@server ~]#stat test.txt
File: ‘test.txt’
Size: 55 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 33639599 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-03-10 18:48:45.782391133 +0800 # 访问时间
Modify: 2022-03-10 18:48:45.782391133 +0800 # 修改时间
Change: 2022-03-10 18:48:45.782391133 +0800 # 属性变化时间
Birth: -
解释下如下时间属性
Access time # 访问时间
Modify time # 修改时间
Change time # 属性变化时间
创建⽂件,且修改⽂件的时间属性,根据如下要求
[root@yuanlai-0224 tmp]# touch /tmp/yuchao_linux.txt
1.修改/tmp/yuchao_linux.txt 访问时间 为2018-08-08 13:00
2.修改/tmp/yuchao_linux.txt 数据修改时间 为2020 07:00
[root@server ~]# touch /tmp/yuchao_linux.txt
[root@server ~]#touch -a -d "2018-08-08 13:00" /tmp/yuchao_linux.txt
[root@server ~]#stat /tmp/yuchao_linux.txt
File: ‘/tmp/yuchao_linux.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17571085 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-08 13:00:00.000000000 +0800
Modify: 2022-03-10 19:48:01.837628778 +0800
Change: 2022-03-10 19:50:09.153637286 +0800
Birth: -
[root@server ~]#touch -m -d "2020-01-01 07:00" /tmp/yuchao_linux.txt
[root@server ~]#stat /tmp/yuchao_linux.txt
File: ‘/tmp/yuchao_linux.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17571085 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-08 13:00:00.000000000 +0800
Modify: 2020-01-01 07:00:00.000000000 +0800
Change: 2022-03-10 19:51:36.266643108 +0800
Birth: -
找到 /var/log ⾥,3天前的所有log⽂件,且删除(⼀条命令,需要有确认提示的删除指令)
#方法一
[root@server ~]#find /var/log/ -type f -mtime +3 -name "*.log" -delete
#方法二
[root@server ~]#find /var/log/ -type f -mtime +3 -name "*.log" -ok rm {} \;
找到/etc/下,最近2天的被修改的所有⽂件,且显示详细信息(⼀条命令。)
[root@server ~]#find /etc/ -type f -mtime -2 | xargs ls -l
-rw-r--r--. 1 root root 545 Mar 9 10:14 /etc/group
----------. 1 root root 430 Mar 9 10:14 /etc/gshadow
-rw-r--r--. 1 root root 36008 Mar 9 10:14 /etc/ld.so.cache
-rw-r--r--. 1 root root 1086 Mar 9 10:14 /etc/passwd
-rw-r--r--. 1 root root 78 Mar 10 16:13 /etc/resolv.conf
-rw-r--r--. 1 root root 78 Mar 9 21:40 /etc/resolv.conf.DFE1I1
----------. 1 root root 777 Mar 9 10:14 /etc/shadow
-rw-r--r--. 1 root root 362 Mar 9 19:52 /etc/sysconfig/network-scripts/ifcfg-ens33
-rw-r--r--. 1 root root 14 Mar 10 08:52 /etc/tuned/active_profile
-rw-r--r--. 1 root root 5 Mar 10 08:52 /etc/tuned/profile_mode
找出机器上,⼤于100k且⼩于2M的所有⽂件。(⼀条命令)
[root@server ~]#find / -type f -size +100k -size -2M |xargs du -sh
2083

被折叠的 条评论
为什么被折叠?



