grep命令:
对数据进行过滤查找关键字,可以找出文件内的的指定内容在哪一行,
Linux是区分大小写的,-n 参数,显示存在该关键字的行号
比如,搜索系统的一些日志文件,找出关于root相关的信息
[root@localhost opt]# grep -n 'root' /var/log/messages
grep不仅能从文件里搜索关键字,只要是文本数据,就可以进行搜索过滤
grep作用是,从文件中(而非文件夹)匹配出存在该关键字的那一行信息。
-i忽略大小写
greo的忽略大小写参数 -i 结合-n显示行号
[root@localhost opt]# grep -n -i
利用grep找出nginx软件,配置文件中,定义的网站监听端口号
[root@localhost opt]# grep -n -i 'listen' /etc/nginx/nginx.conf
39: listen 80;
40: listen [::]:80;
59:# listen 443 ssl http2;
60:# listen [::]:443 ssl http2;
管道符
管道符,和grep结合的是最多的 管道符,在linux中的表达符号是
| (快捷键shift + )
管道符得标准定义
管道是一种通信机制,通常用于进程间的通信。
它表现出来的形式将==前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)==。
利用grep和管道符,来查看系统用户信息
1.找出chaoge用户的信息
/etc/passwd 是系统的用户信息存放文件
在这个文件中,是用户通过命令创建的用户,id号是从1000开始的,比如
useradd yejinyang01
添加完之后,就会在这个文件中生成一行信息
关于查找用户是否存在的命令
# grep 'yejingyang' /etc/passwd
[root@localhost opt]#
[root@localhost opt]#
[root@localhost opt]# # 如何查看linux是否存在某用户,如yejingyang
[root@localhost opt]#
[root@localhost opt]#
[root@localhost opt]# id yejingyang
id: yejingyang: no such user
通过grep找到用户,表示该用户存在
[root@localhost opt]# id yejinyang
uid=1001(yejinyang) gid=1001(yejinyang) groups=1001(yejinyang)
[root@localhost opt]#
[root@localhost opt]#
[root@localhost opt]#
[root@localhost opt]# grep 'yejinyang' /etc/passwd
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash
管道符
命令1 | 命令2
命令1,拿到用户文件信息 | 交给grep再去过滤
管道符常见用法
1.查看系统进程信息的命令
ps -ef # -e 显示所有的进程信息 -f 格式化显示出进程的id号,等其他信息
2.上述命令,找到了一堆进程,如何过滤出我们要的信息呢?
学习如何,正确使用 grep 和管道符,去过滤机器上某个进程,判断某个进程是否存在
1.找出vim的进程
2.找出nginx的进程
检查端口
1.需要学习,检查系统端口的命令,这个命令,和ps -ef 一样,是查看系统某资源信息
netstat -tunlp # 这个组合参数,是查看系统上,所有的端口信息
2. 过滤出,机器上,和ssh远程连接的端口信息,提示程序名叫ssdh,或者端口号是22
结合查看端口的命令+ 管道符+ grep,实现,高效的过滤
netstat -tunlp | grep 'nginx'
统计文件数量
1.统计系统中/var/log目录下有多少个log文件
1.先找出/var/log下所有的log文件,find是递归搜索,找出所有的log后缀文件,不放过一个
find /var/log -name '*.log' | wc -l
统计系统用户数量
/etc/passwd
cat /etc/passwd | wc -l
管道符,结合find命令搜索信息
找出系统中所有的txt文件,然后再过滤出,其中包含了apple信息的txt是哪些
find / -name '*.txt' # 这个命令找出的,每一个txt文件的名字吧,并且是,一堆,一行一行的文本
判断出,这些文件,哪一个是包含了apple字符串内容的
一个个的去grep这些文件才行!!!
# find / -name '*,txt' | grep 'apple'
xargs
作用是,简单的说 就是把其他命令的给它的数据,传递给它后面的命令作为参数
命令1 | xargs 选项
选项
-i 用 {} 代替传递的数据
xargs实现批量备份
xargs实现批量重命名
全系统中搜索,包含某数据的文件名
[root@localhost tmp]# find / -type f -name '*.txt' | xargs -i grep -l '666' {}
普通查找 -type f -type d
文件 文件名 查找 -name
通配符查找
*
find / -name "*.log" 找出系统上所有的.log文件
找出机器上的网卡配置文件
[root@yuanlai-0224 ~]# find /etc -name 'ifcfg-*' /etc/sysconfig/network-scripts/ifcfg-lo/etc/sysconfig/network-scripts/ifcfg-ens33
文件时间
创建时间
首次touch 创建的文件,系统默认给他的时间
首次mkdir 创建的文件夹,系统默认给他的时间
访问时间
这个文件,文件夹,什么时候被人读取过 关乎于不同的linux命令
只是被别人看过了,没发生实质性的变化
修改时间
文件内容,文件属性,发生了实质性的变化
stat文件时间属性
access time
cat
more
less
grep
change time
chmod
chown
mv
当文件名字发生变化,文件属性即发生了变化,导致change时间更改
modify time
文件内容变化 echo "我是文杰" > wenjie.txt
mtime变化会同时修改ctime
对应了find命令的三个参数
-atime根据文件的access time查找
-ctimechange time
-mtimemodify time
touch 作用有俩
1.当文件不存在,则创建该文件,以系统当前时间,定义该文件的时间属性
2.如果该文件存在,则是修改它的时间戳
-d 修改日期
-m 修改mtime
由于修改的是modify time,会连带着ctime一起变化
-a 修改atime
exec 和-ok
-exec和上午xargs是一个意思,找到资料后的动作处理
-ok也是一样,只不过多了一个确认的过程
根据文件大小查
-size
find / -name '*.log' -size +10M #为查找10M的文件
10M正好10M
+10M超过10M
-10M小于10M