12.4 补充命令
我们已经了解了linux的目录结构,接下来我们大概看一下针对目录及文件的一些相关命令,
我们本章只讲三个目录及文件相关的命令,分别是tree,find及校验文件命令,我们一个一个来看这些命令。
12.4.1 tree命令
tree命令一般是没有的,因此我们需要进行安装,所以这里需要先配置好yum,再用yum安装tree。
(因为本章节并不涉及到yum安装,因此请各位移步至下面博客来配置yum源!!)
Linux系统yum安装
我们具体来看看,tree是个怎么个事:
tree格式如下:
tree /目录
我们来看看效果
查看/root的目录结构
看着似乎不是很多,我们来举一个例子多点的
看看 /etc/sysconfig/network-scripts/里的目录结构
可以看到有一根根县连着呢,这个就可以大概看到一个结构图,tree的命令就是简单梳理目录的各个文件的关系。
tree就简单讲到这里,接下来我们来看看下一个命令
12.4.2 locate命令
locate,这个命令主要是用来搜索文件的,该命令有一个优点,搜索速度快,但是结果也不准确,因为linux中维护了一个数据库,数据库中记录了系统中的每个文件的文件名和文件的保存路径,这个数据库每天早上更新一次,因此在当天出现的文件则不会去显示,
说白了:locate搜索文件的时候,就是去检索数据库中的记录,所以搜索速度快,但数据库是日更的,因此需要在第二天的固定时间才能看到这一天的记录!!!!
12.4.3 find
find 是一个搜索命令,主要是用来指定搜索的位置
格式如下
find 搜索目录 搜索条件 执行的动作
搜索目录:
指定搜索的位置,也可以理解为路径加上目标文件,
这里先举个例子吧
我们想要搜索/etc/passwd文件,需进行以下操作
find /etc/passwd
我们来看结果:
结果搜到了/etc/passwd,完成!,下一个( 这里要注意的是,查询文件也可以通过相对路径进行文件查询,查询不到则会显示以下信息)搜索条件:
指定根据什么条件进行搜索,常用的搜索条件如下:
- -name:根据文件名进行搜索
- -iname:指定查找文件的文件名作为查找条件(忽略大小写)
- -group :根据文件的属组进行查找
-user :根据文件的属主进行查找 -uid :根据文件的属主ID进行查找- -gid :根据文件的属组ID进行查找
-nogroup:查找没有属组的文件 -nouser:查找没有属主的文件- -size:根据文件的大小进行搜索
- -type: 根据文件的类型进行查找
- -perm:根据文件的权限进行搜索
- -ctime:根据文件的修改事件进行搜索,单位是天
- -mtime:根据文件的编辑时间进行搜索,单位是天
- -atime:根据文件的访问时间进行搜索,单位是天
-mmin: 根据文件的编辑时间进行搜索, 单位是分钟 -amin : 根据文件的修改时间进行搜索, 单位是分钟 -cmin :根据文件的修改事件进行搜索,单位是分钟我们一个一个来举例子-name
我们已经知道了-name是指定查找文件的文件名作为查找条件,具体的查找格式如下:find 查询的路径 -name 查询的文件名称
我们还是以查询/etc/passwd为例子,查询/etc/passwd需要进行以下操作:find /etc -name passwd
我们来看结果:
可以看到/etc下有两个passwd,完成!(一般情况下建议file后加引号)我们现在进行下一个例子,如果我们不知道查询问件名,我们可以进行模糊输入,模糊输入命令格式如下:find /etc -name "pass*"
小贴士:这里我们用到了 *,该符号代表任意个任意字符,我们已经知道他是代表任意个任意个字符, 自然也可以代表0个符,因此我们一般用*来进行模糊查询。我们看结果:ok,下一个!-iname
我们都知道Linux是严格区分大小写的,说白了,就是指定查找文件的文件名作为查找条件(忽略大小写)还是进行举例,还是对/etc 下的passwd进行举例,使用-iname需要进行以下操作:find/ etc -iname "PASSWD"
我们来看结果iname完成,我们开始下一个内容。(这里因为读者的Linux目前只有root用户,并没有普通用户,因此这里的区块只展示root相关的属主及数组!!!)
-group gname:根据文件属组名称进行查找格式:find 路径 -group "属组名称"
例:在/root下找出属组是root的文件
操作如下
find /root -group gname "root"
我们看执行结果:
ok,完成!!
-user uname
根据文件的属主进行查找格式如下:find 路径 -user "属主名称"
还是在/root目录下,查找属主为root的文件
查询完毕!!
下一个
-uid UID:
根据文件的属主ID进行查找小贴士:属主id,数组id,均在passwd文件中可以查询,在passwd内容中以冒号分隔的第三个数字为属主id,第四个为数组id,具体如下图在我们了解完属组id和属主id后,我们接着来看-uid,-uid的命令格式跟上述内容大差不差,格式如下find 路径 -uid "属主id"
我们还是以root为例,查找root中属主为0的文件
命令如下
find /root -uid "0"
我们看结果
ok,完成,下一个-gid GID:
根据文件的属组ID进行查找
命令格式如下
find 路径 -gid "属组id"
老规矩,root,查看属组为0的文件
命令如下
find /root -gid "0"
看结果
ok,下一个-nogroup:
查找没有属组的文件命令格式如下:find 路径 -nogroup
这里我们不查root了,我们查根目录下没有属组的为背景
命令如下:
find / -nogroup
我们看结果
可以发现,大多数都是未查询到,我们完了一起说!-nouser:
查找没有属主的文件命令格式如下:find 路径 -nouser
还是查根目录没有属主的文件:
命令如下:
find / -nouser
我们看结果
通过查询,我们发现,这里显示没有找到这样的文件或目录,说明所有文件均有属组和属主!!!
-size
这个搜索条件是根据文件的大小进行搜索,格式如下
find 路径名 -size [+-]n
有人可能要问了,n表示什么呢?
n:表示文件的大小,后面跟上的是单位,常用的单位有如下:
- ‘b’ 表示512字节的块,如果不指定单位类型,那么默认就是以字节块为单位
- ‘c’ 为字节
- ‘w’ 两个字节的字
- ‘k’ 以KB为单位
- ‘M’ 以MB为单位
- ‘G’以GB为单位
我们先看例题,再了解[+-]
例
在/root下找出文件大小是1m的文件
命令如下
find /root -size 1M
这里我们可能还会有疑问,root下有这么多1m的文件么?
其实,在不加其他条件时,默认是寻找大于0m小于1m的文件,如果我们把1m换成5m时,则会寻找大于4m小于5m的文件!!!
因此,这里就要用到[+-]了,
[+-]的用法:
- +:大于指定的值
- -:小于指定的值
我们直接看例题:
在/root下找出文件大于是3m的文件
命令如下:
find /root -size +3M
看结果
可以看到,未查询到结果,因此root下没有大于3MB的文件!!
-type 类型:
根据文件的类型进行查找常用的文件类型有以下三种:
- d:目录类型文件
- f:一般文件
- l:连接文件
命令格式如下
find 目录 -type 文件类型
举一个例子,查看root下的一般文件
命令:
find /root -type f
我们看结果
ok了,下一个
-mtime [+-]n
文件的创建(单位是天)-ctime [+-]n
文件修改时间(单位是天)-atime [+-]n
文件的访问时间(单位是天)
这三个命令大差不差,因此我放一块说
n的单位为天,有以下三种写法
- -mtime 5:表示5天之前的那一天所创建的文件
- -mtime -5:表示在5天之内所创建的文件
- -mtime +5:表示在5天之前所创建的文件
我们来举个例子:
找出root下上次访问时间在7天之前的文件命令如下:find /root -atime +7
看结果
ok分钟命令与上面三个命令用法一模一样,因此这里只放命令,不进行演示
-mmin:
根据文件的编辑时间进行搜索, 单位是分钟-amin :
根据文件的修改时间进行搜索, 单位是分钟-cmin :
根据文件的修改事件进行搜索,单位是分钟组合条件:
我们上面了解到了不少,但如果我们要进行组合查询我们该怎么办呢?需要用到下面命令
- -a:且,要求多个条件同时满足
- -o:或,要求多个条件满足任意一个即可
- -not:不是
这里我们举一个例子
从root下找文件类型是一般文件,并且后缀是txt
find /root -type f -a -name *.txt
我们来看结果
ok!!
执行的动作:
-print:
- 将找到的文件输出到终端(默认)
-ls:
- 将找到的文件以长格式的形式输出(相当于执行ls -l)
-exec:
- 表示要执行一个命令
这里我们只讲exec格式,格式如下
find xxx -exec 命令 \;
举例:
删除tmp下后缀是txt的文件。命令如下find /root -name "*.txt" -exec rm -rf {} \;
我们来看结果
root下没有后缀为.txt文件,说明已被删除!!
find命令完工!!!
12.4.4 校验文件
这个命令相比较find命令就比较简单了,这个命令主要是用来校验文件,查看文件是否被修改,具体分为两个操作:
- 生成校验值
- 比对校验
生成校验值
我们将etc下的passwd文件,shadow文件生成校验,命令格式如下
md5sum /etc/passwd /etc/shadow >0513.md5check
此时我们ls一下欸,会发现当前目录下多出一个文件
我们看一下这个一般文件的内容
会发现有两个码,但请注意:这个不是乱码,这个是通过md5编码将这两个文件内容转换成md5编码,如果如果文件内容被修改,则编码将会完全不一样!!!
我们随便修改passwd里面的内容看一下:
我们将root系改为raot,现在我们进行验证
比对校验
命令格式如下
md5sum -c 0513.md5check
看结果
可以看到,oasswd出现异常,但shadow完好无损,由此得出passwd遭到我的篡改!
好了,本章的补充内容就到这里了,如果有什么不足还请各位读者指出,感谢大家观看,下班!