目录
0. 前言
今天还是接着前面继续记录我学习Linux的过程,虽然学的比较浅薄,但是通过相关资料查阅,我还是尽量补全了相关概念或者命令的使用,以备后面遇到不懂的地方,能及时找到答案,但说实话写这些东西就当加深记忆吧。就说这么多,要开始写啦!
1. 修改文件属性与权限
如图1.1所示,是文件或目录的权限属性,而当在Linux系统中管理文件和目录时,经常需要更改文件和目录的属性和权限。其中以下三个命令是Linux系统中非常重要的文件和目录管理命令,使用它们可以更好地控制文件和目录的属性和权限,提高系统的安全性和管理效率。
“注意:在修改文件或目录的属性和权限时,请确保您有足够的权限执行这些操作。
”
1.1 修改所属用户组 —— chgrp
chgrp
命令用于修改文件或目录所属的用户组。通常情况下,每个用户都属于一个或多个用户组。文件或目录的所属用户组是由创建该文件或目录的用户在创建时指定的。要使用chgrp
命令修改文件或目录的所属用户组,需要使用该命令的以下语法:
chgrp [选项] 用户组名 文件名/目录名
例如,要将文件file.txt
的所属用户组更改为group1
,可以使用以下命令:
chgrp group1 file.txt
1.2 修改文件拥有者 —— chown
chown
命令用于修改文件或目录的拥有者和所属用户组。通常情况下,每个文件或目录都由一个拥有者和一个所属用户组来管理。文件或目录的拥有者和所属用户组是由创建该文件或目录的用户在创建时指定的。要使用chown
命令修改文件或目录的拥有者和所属用户组,需要使用该命令的以下语法:
chown [选项] 用户名:用户组名 文件名/目录名
例如,要将文件file.txt
的拥有者更改为user1
,所属用户组更改为group1
,可以使用以下命令:
chown user1:group1 file.txt
其中冒号(:)用于分隔所有者和所在组。
1.3 修改文件权限 —— chmod
chmod
命令用于修改文件或目录的权限。通常情况下,每个文件或目录都有一个访问权限控制列表,用于限制用户访问该文件或目录的权限。访问权限控制列表由三种权限组成,分别是读取权限(r)、写入权限(w)和执行权限(x),它们分别表示用户对文件或目录的读取、写入和执行权限。要使用chmod
命令修改文件或目录的权限,需要使用该命令的以下语法:
chmod [选项] 权限模式 文件名/目录名
例如,要将文件file.txt
的所有者设置为读、写和执行权限,所在组设置为读和执行权限,其他用户设置为执行权限,可以使用以下命令:
chmod 751 file.txt
“那么这里的
”751
是什么意思呢?
-
1.3.1 数字类型模式
在Linux系统中,文件和目录的访问权限由三位数字表示,分别是针对文件所有者
、所在组
和其他用户
的访问权限。每个数字都由三个位表示,每个位表示一个访问权限。读取权限对应的位用数字4(100b)
表示,写入权限对应的位用数字2(010b)
表示,执行权限对应的位用数字1(001b)
表示,若不具有该权限则用数字0(000b)
表示。因此,751这个三位数字的组合代表了不同用户对该文件或目录的访问权限。具体的权限组合可以参考下表:
权限 | 数字表示 | 说明 |
---|---|---|
无权限 | 0 | 没有任何访问权限 |
执行权限 | x或1 | 可以执行该文件或查看该目录的内容 |
写入权限 | w或2 | 可以编辑、修改或删除该文件或目录中的文件 |
读取权限 | r或4 | 可以读取该文件或目录的内容 |
执行和写入权限 | wx或3 | 可以执行和修改该文件或查看该目录的内容 |
读取和执行权限 | rx或5 | 可以读取和执行该文件或查看该目录的内容 |
读取和写入权限 | rw或6 | 可以读取和编辑该文件或修改该目录中的文件 |
读取、写入和执行权限 | rwx或7 | 可以读取、编辑、执行该文件或查看该目录的内容 |
因此,这里的751是chmod
命令中的权限模式,它表示修改文件或目录的权限为以下方式:
-
对于文件所有者,具有读取(4)、写入(2)和执行(1)权限,即4+2+1=7。
-
对于所在组的用户,具有读取(4)和执行(1)权限,即4+1=5。
-
对于其他用户,具有执行(1)权限。
-
1.3.2 符号模式
在Linux系统中,还有另外一种设置权限的方式,称之为符号模式(Symbolic Mode)。符号模式通过使用符号表示权限,可以更加直观和方便地设置文件或目录的权限。符号模式中,使用加号(+)添加权限、减号(-)删除权限和等号(=)设置权限的方式来修改文件或目录的权限。
下面是符号模式下权限表示方法的表格:
符号 | 含义 |
---|---|
u | 文件所有者(user) |
g | 所在组的用户(group) |
o | 其他用户(others) |
a | 所有用户(all) |
+ | 添加权限 |
- | 删除权限 |
= | 设置权限 |
r | 读取权限 |
w | 写入权限 |
x | 执行权限 |
通过组合使用这些符号,可以更加灵活地设置文件或目录的权限。例如,使用符号模式的方式将文件所有者的读、写和执行权限设置为可执行,所在组的用户的读取和执行权限设置为可执行,其他用户的执行权限设置为可执行,可以使用chmod u=rwx,g=rx,o=x
或者chmod 751
来设置。
当然采用符号模式设置权限不止于此,下面是一些使用符号模式设置权限的一般例子:
1) 将文件权限设置为所有用户都可以读取:
chmod a+r filename
2) 将文件权限设置为文件所有者和所在组的用户都可以读取和写入,其他用户没有任何权限:
chmod u=rw,g=rw,o= filename
3) 将文件权限设置为文件所有者和所在组的用户都可以读取、写入和执行,其他用户只能读取和执行:
chmod u=rwx,g=rwx,o=rx filename
4) 将目录权限设置为文件所有者和所在组的用户都可以读取、写入和执行,其他用户只能执行:
chmod u=rwx,g=rwx,o=x directoryname
ps : 符号模式下的权限设置是相对于原来的权限变化的
,因此需要先了解原来的权限设置。如果不确定原来的权限设置,建议使用数字模式
来设置权限。
2. Linux文件类型
下面是常见的Linux文件类型及其属性的表格描述:
文件类型 | 属性 | 描述 |
---|---|---|
普通文件 | - | 存储文本或二进制数据 |
目录 | d | 存储其他文件和目录 |
链接文件 | l | 指向另一个文件或目录 |
设备文件 | c 或 b | 代表物理设备或者虚拟设备 |
管道文件 | p | 用于进程间通信 |
套接字文件 | s | 用于网络通信 |
文件类型可以通过 ls -l
命令来查看,其中第一列的第一个字符表示文件类型,其余九个字符表示文件权限信息。例如,一个普通文件的权限信息可能是 -rw-r--r--
,其中第一个字符 -
表示文件类型为普通文件。
3. 绝对路径与相对路径
绝对路径和相对路径都是用于表示文件或目录在文件系统中的位置的方式,具体解释如下:
-
绝对路径:从文件系统根目录(/)开始的完整路径。使用绝对路径,可以明确地指定文件或目录的位置。在Linux系统中,绝对路径以/开头。例如,/home/user1/file1 表示文件系统中的/home目录下的user1目录中的file1文件。
-
相对路径:相对于当前工作目录的路径。使用相对路径,可以相对于当前目录来表示文件或目录的位置。在Linux系统中,当前工作目录可以使用pwd命令查看。例如,假设当前工作目录是/home/user1,那么file1文件的相对路径可以是./file1或者file1。
相对路径可以使用以下符号来表示:
-
.:表示当前目录,例如./file1表示当前目录下的file1文件;
-
..:表示上级目录,例如../dir1表示上级目录中的dir1目录;
-
~:表示当前用户的主(家)目录,例如~/file1表示当前用户的主目录下的file1文件。
ps : 使用相对路径时,不同用户可能会有不同的工作目录,因此相对路径的含义可能会不同。而绝对路径始终指向同一个文件或目录。
4. 一些常用的命令
4.1 切换目录 —— cd
在Linux中,cd
是change directory的缩写,使用cd
命令可以切换当前工作目录。cd
命令有以下用法:
-
cd directory
:将当前工作目录切换到指定目录; -
cd ..
:将当前工作目录切换到上级目录; -
cd ~
或cd
:将当前工作目录切换到当前用户的家目录。
例如,假设当前工作目录是/home/user1,那么以下命令可以切换工作目录:
-
cd /
:切换到根目录; -
cd /var/log
:切换到/var/log目录; -
cd ..
:切换到/home目录; -
cd ~/Documents
:切换到当前用户的家目录下的Documents目录; -
cd
:切换到当前用户的家目录。
ps : 如果目标目录的权限不足或者不存在,cd
命令将会失败并显示错误信息。另外,cd
命令只会影响当前的shell会话,不会影响其他会话或进程。
4.2 显示当前目录 —— pwd
在Linux中,可以使用pwd
命令来显示当前工作目录的完整路径。pwd
命令是print working directory的缩写,它会输出当前工作目录的绝对路径。例如,假设当前工作目录是/home/user1/Documents,那么执行pwd
命令后,会输出以下结果:
/home/user1/Documents
ps : pwd
命令只会显示当前工作目录的路径,而不会列出目录中的文件或子目录。如果需要列出目录中的文件或子目录,可以使用ls
命令。
此外,可以使用-P
参数来显示符号链接解析后的真实路径
。如果当前工作目录是一个符号链接(软链接或硬链接)指向的目录,则pwd默认会显示符号链接的路径。使用-P参数后,pwd会显示符号链接解析后的真实路径
。
4.3 新建目录(文件夹) —— mkdir
在Linux中,可以使用mkdir
命令来新建目录。mkdir
命令的基本语法如下:
mkdir [选项] 目录名
其中,目录名
是要创建的目录的名称,选项
是可选的,可以用来指定一些特殊的操作。常用的mkdir
命令选项包括:
-
-p
:递归地创建目录,如果父目录不存在则会自动创建; -
-m
:指定新建目录的权限,使用数字或符号表示; -
-v
:显示创建的目录的名称。
例如,要在当前工作目录下创建一个名为mydir
的新目录,可以使用以下命令:
mkdir mydir
如果要创建一个多级目录,例如/home/user1/Documents/mydir
,可以使用-p
选项递归创建:
mkdir -p /home/user1/Documents/mydir
如果需要指定新建目录的权限,可以使用-m
选项。例如,以下命令会创建一个新目录mydir
,并将其权限设置为rwxr-xr-x
:
mkdir -m 755 mydir
ps : mkdir
命令只能在当前用户有写权限的目录下创建新目录。如果目标目录不存在,但是其父目录存在且当前用户有对其父目录的写权限,则可以使用-p
选项递归创建目录。
4.4 删除‘空’目录——rmdir
在Linux中,可以使用rmdir
命令来删除空目录。rmdir
命令的基本语法如下:
rmdir [选项] 目录名
其中,目录名
是要删除的空目录的名称,选项
是可选的,可以用来指定一些特殊的操作。常用的rmdir
命令选项包括:
-
-p
:递归地删除指定目录及其空父目录; -
-v
:显示删除的目录名称。
例如,要删除当前工作目录下名为mydir
的空目录,可以使用以下命令:
rmdir mydir
如果要删除一个多级目录,例如/home/user1/Documents/mydir
,可以使用-p
选项递归删除:
rmdir -p /home/user1/Documents/mydir
ps : rmdir
命令只能删除空目录,如果目录下有文件或其他子目录,rmdir
命令将会报错。如果要删除非空目录,可以使用rm
命令,并加上适当的选项。
4.5 新建文件 —— touch
在Linux中,可以使用touch
命令来创建空文件或更新已有文件的时间戳。touch
命令的基本语法如下:
touch [选项] 文件名
其中,文件名
是要创建或更新的文件名称,选项
是可选的,可以用来指定一些特殊的操作。常用的touch
命令选项包括:
-
-a
:仅更新文件的访问时间戳; -
-c
:如果文件不存在,则不创建文件; -
-m
:仅更新文件的修改时间戳; -
-r
:使用指定文件的时间戳更新目标文件的时间戳; -
-t
:使用指定时间戳更新目标文件的时间戳。
如果使用touch
命令创建一个空文件,例如myfile.txt
,可以执行以下命令:
touch myfile.txt
如果文件不存在,则touch
命令会创建一个名为myfile.txt
的空文件。如果文件已经存在,则touch
命令会更新该文件的修改时间戳为当前时间。
如果要同时更新访问时间戳和修改时间戳,可以使用-a
和-m
选项:
touch -am myfile.txt
如果要更新文件的时间戳为指定时间,可以使用-t
选项。例如,以下命令将myfile.txt
的时间戳设置为2022年4月30日12时30分:
touch -t 202204301230 myfile.txt
ps : touch
命令只能在当前用户有写权限的目录下创建或更新文件。如果目标文件不存在,但是其父目录存在且当前用户有对其父目录的写权限,则可以使用-c
选项来避免创建新文件
,即该文件不存在也不会创建新的文件;若目标存在仅做修改时间戳操作
。
4.6 查看目录信息 —— ls
在Ubuntu中,"ls"是一个常用的命令,用于列出当前目录中的文件和目录。
以下是一些常见的"ls"命令的选项:
-
"-l":显示详细的文件信息,例如文件类型、权限、所有者、大小和最后修改时间等。
-
"-a":显示所有文件和目录,包括以"."开头的隐藏文件和目录。
-
"-h":以人类可读的方式显示文件大小。
-
"-t":按时间顺序列出文件,最新的文件先显示。
-
"-r":反向排序,最早的文件先显示。
示例命令:
ls -l # 以详细形式列出当前目录的文件和目录
ls -a # 列出当前目录中所有的文件和目录,包括隐藏文件和目录
ls -lh # 以人类可读的方式列出当前目录的文件和目录的详细信息
ls -lt # 按时间顺序列出当前目录的文件和目录
ls -lr # 按时间相反顺序列出当前目录的文件和目录
5. 结束语
算啦,不写了,就这样结束本次记录吧~