目录
- 前言
- 一、系统环境
- 二、Linux文件权限信息
- 2.1 查看Linux文件权限信息
- 2.2 修改Linux文件权限信息
- 2.2.1 chmod命令
- 2.2.2 chown命令
- 三、Linux文件与目录的管理
- 3.1 查看文件或文件夹
- 3.1.1 查看文件内容
- 3.1.2 查看文件夹内容
- 3.2 新增文件或文件夹
- 3.2.1 新增文件
- 3.2.2 新增文件夹
- 3.3 删除文件或文件夹
- 3.4 修改文件或文件夹
- 3.5 查找文件或文件夹
- 3.6 有关文件或文件夹的其他命令
- 3.7 特殊符号
- 总结
前言
本篇文件介绍Linux系统的文件权限信息,包括查看文件权限信息和修改文件权限信息;并介绍Linux系统实现文件和文件夹管理的各种命令;最后介绍常用的特殊符号,包括管道符、重定向符。
一、系统环境
- 虚拟机版本:VMware® Workstation 15 Pro
- Linux镜像文件:CentOS-7-x86_64-Minimal-1804.iso
- 主机系统:Windows 11 家庭中文版
- 主机系统类型:64 位操作系统, 基于 x64 的处理器
- 远程连接工具:MobaXterm中文版本
二、Linux文件权限信息
2.1 查看Linux文件权限信息
Linux是一个多用户多任务的操作系统,为了提高系统的安全性,Linux系统中的不同的用户对一个同文件(包括目录文件)可能拥有不同的操作权限。不同的用户组对同一个文件也可能拥有不同的操作权限。
语法格式:ls -l /
以列表的形式展现根目录下的文件信息
以上信息,在这里只关注第一列、第三列和第四列的信息。
- 第一列信息
第一列的信息由十个字符组成,即十个位置。十个位置又可分为四类信息。
第一个位置表示文件类型(file type)
第二、三、四位置表示第三列用户所拥有的操作权限(user permissions)
第五、六、七位置表示第四列用户组所拥有的操作权限(group permissions)
第八、九、十位置表示其他用户或其他用户组所拥有的操作权限(other permissions)
对于权限信息的描述,以rwx的顺序描述,如果没有对应的权限,则为-
- 文件类型(file type)
字符 文件类型 d 文件夹 - 文件 l 链接文档(其指向一个文件,例如上图的bin文件,其指向/usr/bin) - 操作权限(operator permission)
字符 操作权限 r readable,读权限(对于文件,可以查看文件内容;对于文件夹,可以查看文件夹的文件) w writeable,写权限(对于文件,可以修改文件内容;对于文件夹,文件夹内创建、删除文件) x excuteable,执行权限(对于文件,可将文件作为程序执行;对于文件夹,可以cd到此文件夹) - 无权限
- 第三列信息
文件的所属用户(文件属主),对应于用户权限字段(user permissions) - 第四列信息
文件的所属用户组(文件属组),对应于用户组权限字段(group permissions)
根据以上描述,以/home目录为例,
其文件类型为d,文件夹;
用户名root拥有的权限为rwx,说明拥有这个文件夹的所有权限;
用户组root拥有的权限为r-x,说明用户组root拥有这个文件夹读权限和执行权限,而没有写权限。
其他用户或用户组拥有的权限为r-x,说明其他用户和其他用户组拥有这个文件夹的读权限和执行权限,而没有写权限。
2.2 修改Linux文件权限信息
2.2.1 chmod命令
文件的所属用户可以修改对应文件的权限信息;root用户可以修改所有文件的权限信息。
通过chmod命令,可以修改文件的权限信息。
语法格式:chmod [-R] 权限 文件或文件夹
-R 表示当修改的对象为文件夹时,将文件夹内的文件权限一起修改
对于参数权限,分两种方式说明
方式一:以字符描述方式修改
格式的顺序:操作对象 操作 权限
操作对象有:u(表示所属用户)、g(表示所属用户组)、o(表示其他用户或用户组)、a(表示所有用户)
操作有:=(表示设定)、+(表示添加)、-(表示删除)
权限有:r(表示读权限)、w(表示写权限)、x(表示执行权限)、没有对应的权限则省略不写
注意:不同的对象使用逗号隔开
例子1,
chmod u=rwx,g=rx,o=rx test.txt
表示将test.txt文件的权限信息修改为 所属用户权限:rwx,所属用户组权限:rx,其他用户:rx
例子2,
chmod -R u=rwx,g=x,o=r test
表示将文件夹以及文件夹内的文件权限信息修改为 所属用户:rwx,所属用户组:x,其他用户:r
例子3,
chmod a+x test.txt
表示向文件test.txt的所有用户添加x权限,包含了所属用户,所属用户组。
方式二:以数字描述方式修改
原理:把rwx看做3个二进制位,对于每个二进制位,1表示对应权限有效,0表示对应权限无效。
二进制 十进制 权限
100 4 r
010 2 w
001 1 x
000 0 -
假设要修改所属用户的权限为rwx,则对应的二进制位111,二进制111对应的十进制数为7
那么,在修改所属用户权限时,数字7表示其要修改的权限。
假设要修改所属用户组的权限为r-x,则对应的二进制位101,二进制101对应的十进制数为5
那么,在修改所属用户组权限时,数字5表示其要修改的权限
例子1,
chmod 755 test.txt
表示将test.txt文件的权限信息修改为 所属用户权限:rwx,所属用户组权限:rx,其他用户:rx
例子2,
chmod -R 714 test
表示将文件夹以及文件夹内的文件权限信息修改为 所属用户:rwx,所属用户组:x,其他用户:r
2.2.2 chown命令
只有root用户可以修改文件的所属用户和所属用户组
通过chown命令,可以修改文件的所属用户和所属用户组。
语法格式:chown [-R] [所属用户][:][所属用户组] 文件或文件夹
-R 表示对文件夹的内容应用相同的规则
例子1,
chown pyc test.txt
将test.txt文件所属用户修改为pyc
例子2,
chown :pyspring test.txt
将test.txt文件所属用户组修改为pyspring
例子3,
chown pyc:pyspring test.txt
将test.txt文件所属用户修改为pyc,同时将所属用户组修改为pyspring
三、Linux文件与目录的管理
3.1 查看文件或文件夹
3.1.1 查看文件内容
- cat命令
从第一行开始显示文件内容
语法格式:cat 文件
- more命令
一页一页的显示文件内容
语法格式:more 文件
- tail命令
显示文件末尾的内容
语法格式:tail [-f -num] 文件
-f 表示持续监听文件的内容
-num num表示要查看文件尾部几行内容,默认10行
- vi命令
vi文本编辑器打开文件后可查看文件内容
语法格式:vi 文件
- grep命令
从文件中通过关键字过滤文件行
语法格式:grep [-n] 关键字 文件
-n 表示在结果中显示匹配行的行号
关键字 表示要过滤的关键字,带有空格或其他特殊符号,使用""
文件 表示要过滤内容的文件,可作为内容输入端口(通常配合管道符使用)
- wc命令
统计文件内容的行数、单词数量等
语法格式:wc [-c -m -l -w] 文件
-c 表示统计bytes数量
-m 表示统计字符数量
-l 表示统计行数
-w 表示统计单词数量
文件 被统计的文件,可作为内容输入端口(通常配合管道符使用)
3.1.2 查看文件夹内容
- ls命令
查看某个文件夹下的文件
语法格式:ls [选项] [文件夹]
选项说明如下
-l 以列表形式展示文件夹的文件
-a 展示文件夹的全部文件,默认不展示隐藏文件
-h 以易于阅读的形式展示,需要与-l一起使用
以上命令可以组合使用
不写查看文件夹参数,则查看当前工作目录下的文件
例子1,
ls -l
表示以列表的形式展示当前目录下的文件
例子2,
ls -lh /home/pyc/test
表示以列表的形式展示test文件夹下的文件
3.2 新增文件或文件夹
3.2.1 新增文件
- touch命令
语法格式:touch 文件名
3.2.2 新增文件夹
- mkdir命令
语法格式:mkdir [-p] 文件夹名
-p 表示自动创建不存在的父目录,适用于创建连续多层级目录
3.3 删除文件或文件夹
- rm命令
语法格式:rm [-f -r] 参数1 参数2 ... 参数N
-f force,表示强制删除
-r 表示递归删除,用于删除文件夹
参数1 参数2 ... 参数N 表示要删除的文件或文件夹
例子1,
rm test.txt
表示删除当前工作目录下的test.txt文件
例子2,
rm -rf /test
表示强制删除根目录下的test文件夹
注意:删除文件时,需要对应权限才可以删除,根目录下的文件或文件夹需要root权限
例子3,
关于通配符*的使用
通配符*可以进行模糊匹配
rm test*.txt
表示删除以test开头的.txt文件
注意:非必要情况,请不要在root用户下执行以下两个命令
rm -rf /
rm -rf /*
效果等同于在windows上对c盘进行格式化
3.4 修改文件或文件夹
- cp命令
cp命令可以用于复制文件或文件夹
语法格式:cp [-r] source dest
-r 表示递归复制,用于文件夹的复制
source 表示被复制的源文件或源文件夹
dest 表示复制的目的地
- mv命令
mv命令可以用于移动文件或文件夹
语法格式:mv source dest
source 表示被移动的源文件或源文件夹
dest 表示移动的目的地,如果目的地不存在,则相当于进行改名
3.5 查找文件或文件夹
- pwd命令
显示当前的工作目录
语法格式:pwd
- which命令
查找某个命令的文件路径
语法格式:which 命令
- find命令
按照文件名或文件大小查找文件
按文件名查找
语法格式:find 起始路径 -name "被查找文件名"
例子1,
find / -name "test"
表示查找的起始路径为根目录,被查找的文件名为test
例子2,
find / -name "test*"
表示查找的起始路径为根目录,使用通配符*,查找以test开头的文件
按文件大小查找
语法格式:find 起始路径 -size [+ -]num[k M G]
+ 表示大于
- 表示小于
num 文件大小
k 文件大小单位:KB
M 文件大小单位:MB
G 文件大小单位:GB
例子1,
find / -size +100k
表示查找的起始路径为根目录,被查找的文件大小大于100KB
3.6 有关文件或文件夹的其他命令
- cd命令
切换到某个文件夹(目录)
语法格式:cd 文件夹
3.7 特殊符号
- 管道符
管道符的作用是将符号左边命令的结果作为符号右边命令的输入
|(管道符)
例子1,
grep "pyspring" test.txt | wc -l
表示使用grep对test.txt进行过滤,查找带有pyspring的文件行,wc命令将对grep的结果进行行数统计
- 反引号
被反引号包起来的命令,可以得到命令的结果,而不是命令本身
``(反引号)
例子1,
echo `pwd`
echo是输出内容到屏幕的命令,这里输出的是pwd命令运行的结果
- 重定向符
> 将符号左侧命令的结果,覆盖写入到文件中
>> 将符号左侧命令的结果,追加写入到文件中
例子1,
echo "Hello world" > test.txt
表示将echo执行的命令结果覆盖写入到文件test.txt中
例子2,
echo "Hello world" >> test.txt
表示将echo执行的命令结果追加写入到文件test.txt中
- 通配符
通配符可以实现文件的模糊匹配
*(通配符)
例子1,
find /home/pyc -name "test*"
表示查找的起始路径为/home/pyc,查找以test开头的文件