Linux系列(6):入门之文件与目录管理
你知道常见的目录操作吗?
知道如何查询文件内容吗?
了解 umask 指令吗,知道如何查看和设置文件的默认权限吗?
知道文件的隐藏属性吗,了解如何设置(chattr指令)并查看(lsattr指令)吗?
知道文件的特殊权限吗,了解如何设置(chmod指令)和查看(ls指令)吗?
了解 file 指令吗,知道怎样查询文件的详细类型吗?
了解whereis 与locate以及find指令的区别吗,知道如何查找文件与指令的位置吗?
了解FHS吗?
如果有你不知道的,那么这篇文章可以带你了解这些知识。
1.目录与文件相关操作
1.对目录的操作
对目录的操作主要是:创建目录、删除目录、查看当前目录、变换目录等。
1.删除非空目录
格式:
rm -r mydir //删除目录(非空目录)及里面的所有内容。
注意:当需要删除一个非空目录时,最好通过普通用户来执行递归删除操作(系统不会每删除一个文件就询问一次 )。为什么呢?因为当使用root用户执行递归删除操作时,系统为了安全每删除一个文件就会询问一次。
2.移动文件与目录或更新目录名
移动文件: 当mv指令的第一个参数为文件A,最后一个参数为目录dir时,表示将A文件移到目录dir当中。
更新目录名:当mv指令的第一个参数为目录mydir,最后一个参数为修改后的目录名称(该目录名必须不存在,否则就是移动目录了)时,表示将目录mydir的名称更改目录名dir。
移动目录:当mv指令的第一个参数为目录mydir,最后一个参数为目录dir时,表示将目录mydir移到目录dir中。
2.对文件的操作
对文件的操作主要有:创建文件、删除文件、移动文件、查看文件等。
3.取得路径的文件名称与目录名称
指令格式:
basename 文件绝对路径名 //获取文件名
dirname 文件绝对路径名 //获取文件路径
2.文件内容查阅
3.文件与目录检视
4.文件默认权限
1.查询文件默认权限
指令:umask //不带参数代表查询文件默认权限
不带选项和参数执行该指令默认情况下会输出 0022。
这4个数字分为两部分0(这是第一部分)和022(这是第二部分)来看。
接下来先看022代表的意思:
1.第一部分
这部分与文件的特殊权限有关。
该部分仅包含一个数字。
2.第二部分
这部分与普通权限(即读、写、执行)有关。
该部分包含3个数字,第一个数字(0)代表当前用户,第二个数字(2)代表当前组,第三个数字(2)代表其他用户。
0:代表当前用户的权限,且权限为rwx;为什么是这样?默认rwx权限都具备,这里的0代表没有减去权限,因此当前用户的权限还是rwx。
2:代表当前组的权限,且权限为r-x;为什么是这样?默认rwx权限都具备,这里的2(用二进制表示就是10)代表减去权限w,因此当前用户的权限是r-x。
2:代表当前组的权限,且权限为r-x;为什么是这样?默认rwx权限都具备,这里的2(用二进制表示就是10)代表减去权限w,因此当前用户的权限是r-x。
2.设置默认的文件权限
指令:umask //带参数表示设置默认的文件权限
实例:umask 000 //表示当前用户、当前群组、其他用户创建的文件都具有rwx权限
5.文件隐藏属性
设置文件隐藏属性指令chattr与查看文件隐藏属性指令lsattr很重要。
1.设置文件隐藏属性
指令:chattr
个人认为上面的 a 和 i 这两个属性最重要。
接下来看一下文件隐藏属性案例:
这个指令很重要,尤其是在系统的数据安全方面,由于这些属性是影藏的,因此只有使用lsattr指令才能查看隐藏属性。
2.查看文件隐藏属性
指令:lsattr
6.文件特殊权限
1.文件特殊权限种类
一共有三种:SUID、SGID、SBIT。
注意:SUID使用在文件上、而SBIT是用在目录上的,而SGID二者皆可。
2.特殊权限功能
1.SUID特殊权限
SUID的全称是Set UID,顾名思义,设置UID。该权限只针对文件有效(目录无效)。
这样讲限制与功能你有可能不理解,那接下来我们举个例子:
3.设置特殊权限
chmod指令设置特殊权限。
1.chmod数字格式设置
指令案例:chmod 4777 filename //给filename设置的所有用户的权限为rwxs
下面就举一个实例加深理解:
2.chmod字符格式设置
指令案例:chmod u=rwxs,go=r-x filename //给filename设置的当前用户权限为rwxs、组和其他用户设置r-x权限
2.SGID特殊权限
与SUID不同的是,SGID可以针对文件或目录来设置(即该权限对文件和目录都有效)。
SGID权限对于文件和目录的功能是不同的。
1.SGID权限对于文件的功能
SGID功能和要求如下:
下面讲解一个实例来加深理解:
SGID权限对于文件的功能已经讲完了,接下来讲一下SGID权限对于目录的功能。
2.SGID权限对于目录的功能
当目录设置成了SGID权限后就会具备以下功能:
3.SBIT特殊权限
7.查询文件的类型
之前通过 ls -l 指令可以查看文件的类型与属性,但是ls命令中显示的文件类型是比较宽松的文件类型(一般文件、连接文件、目录文件),那么如果我想知道详细的文件类型呢?该怎么办:使用file指令。
指令:file
8.文件与指令的搜索
文件与指令的搜索就是找出文件与指令的位置。
1.指令文件名的搜索
我们经常在终端上使用指令,比如ls、cat等,那怎么知道这些指令被放在哪里呢?可以通过which和type指令查找指令文件存放的位置。
1.which(寻找可执行文件)
这里的可执行文件指的是二进制文件
格式:
which command //列出一个从PATH可以找到的指令文件名
注意:which这个指令是根据PATH环境变量所规范的路径,去搜索“可执行文件”的文件名,所以重点是找出“可执行文件”而已!which后面接的是完整文件名。which无法寻找bash的内置指令(bash内置指令不在PATH环境变量中),但是可以通过type找出bash的内置指令。
2.文件文件名的搜索
在Linux下有很多搜索文件的指令。通常find指令不是很常用,因为速度比较慢。一般我们先用whereis或者locate指令来搜索,如果找不到才会用find来搜索。那么这些不同的搜索指令各有什么特点呢?
whereis:仅仅只寻找系统中某些特定目录下的文件。特定目录:/bin/sbin、/usr/share/man、/usr/src等几个目录下的某些子目录。
locate:利用数据库来搜索文件名。
find:直接搜索硬盘。
1.whereis指令详解
实例:
2.locate指令详解
keyword:表示部分文件名。
locate可以通过部分文件名找到一个或多个文件;可以通过部分文件名找到文件这个功能是特别好的。
注意:locate有个限制,因为locate搜寻的数据是从“已创建的数据库 /var/lib/mlocate/”里面的数据中查找的,而数据库的创建默认是在每天执行一次,所以在你新建文件之后,却在数据库更新之前去查找该文件,那么locate会告诉你找不到该文件,因为你必须以root身份使用updatedb手动更新数据库。手动更新数据库之后再使用locate就可以查找到文件了。
updatedb指令用法
格式:
updatedb //根据/etc/updatedb.conf的设置去搜寻硬盘内的文件名,并更新/var/lib/mlocate/目录内的数据库文件
3.find指令详解
find的功能特别强大,因此用法也有点复杂,有以下几种:
《1》查找并显示指定目录下那些指定时间段内被修改过的文件的文件位置。
《2》查找并显示指定目录下属于某个指定使用者或群组的文件的文件位置。
《3》查找并显示指定目录下指定的文件名或权限的文件的文件位置。
《4》额外的功能,就是使用额外的指令对查找的结果进行处理。
以上4种大的功能的查找是通过不同的选项以及参数来实现的。
统一格式:
find [ path ] [ opation ] [ action ]
在此根据功能区分分别讲解选项与参数的意义:
1.查找并显示指定目录下那些指定时间段内被修改过的文件的文件位置
2.查找并显示指定目录下属于某个指定使用者或群组的文件的文件位置
3.查找并显示指定目录下指定的文件名或权限的文件的文件位置
4.额外功能
实例1
查找/home/zxp_user中大于1MB的文件