Linux文件与目录管理
1. 目录与路径
1.1 相对路径与绝对路径
Linux中,文件的路径有两种表达方式,即相对路径和绝对路径。顾名思义,相对路径就是相对于当前路径来说的路径,而绝对路径就是以根目录为出发点的路径。因此相对路径的表达方式不是唯一的,而绝对路径的表达方式是唯一的,一定是以根目录/开头的路径。
1.2 目录的相关操作
在这里有几个特殊的目录符号需要牢记:
. 单独的一个点表示当前目录
..两个连续的点表示上一层目录
- 一个破折号表示前一个工作目录
~一个波折号表示当前用户的主目录
~account 这个表示的是用户名为account的主目录
此外还需要记住的是,任何一个目录下面都会有这么两个目录.和..,分别表示当前目录和上一层目录。
现在介绍几个常见的处理目录的命令
cd 切换目录
pwd 打印显示当前目录
mkdir 创建一个新的目录,这个命令常用的两个参数是-p和-m,-p表示递归创建目录,-m用于设定目录权限,而无需理会默认属性。
rmdir 删除一个空的目录 这个命令是用于删除空目录,如果目录非空,则必须用rm命令来进行删除。-p参数用于递归的删除上层的空目录。
1.3 执行文件的路径变量$PATH
这就是环境变量,当我们在控制台输入一个指令时,即使当前的工作目录中不存在我们要执行的命令,环境变量会使得我们自动去在环境变量中包含的目录中的相关文件,如果存在命令,就可以执行。例如ls命令,其本身的文件是存在于/ bin/ls中的,但是我们在任何一个工作目录下都能执行该命令是因为我们把/bin这个文件夹加入到了我们的环境变量,即$PATH中。
可以用echo $PATH来查看当前用户的环境变量,不同的用户的环境变量不一致。 我们可以通过命令 PATH = $PATH: /srv 来把目录/srv添加到环境变量中。
2. 文件与目录管理
2.1 ls cp mv rm
ls 指令时用于查看文件与目录,其中包含的参数很多个,在Linux中可以用man ls 或者 info ls来查看用法。通常情况下,执行此命令后显示蓝色的字符为文件夹,白色的为文件。
cp命令是copy的缩写,字面意思就是复制文件,但是其除了复制文件还可以用于创建快捷方式,对比两文件的新旧来确定是否更新以及复制整个文件夹。 这一版都是与cp命令的参数来决定其功能的,同样我们可以通过man 和info来查看其参数。值得注意的是-a参数使得复制的时候可以复制文件的权限与时间属性,但是无法复制文件的所有者和所在组,如果要改变其所有者和所在组,可以通过chgrp和chown来实现。
mv命令是move的缩写,字面意思就是移动的含义,除此之外还可以用于文件或者目录的重命名。值得注意的是若是要进行多个源文件或者目录的移动时,最后面的目标文件一定是个目录。
rm是remove的缩写,因此其含义就是删除。这个命令很简单,也可以通过man 和 info 来查看具体用法。
2.2 获取某路径的文件名与路径名
有时候在当前路径下我们需要知道那些是属于文件名的,哪些是属于路径名的,因此我们可以通过basename 和 dirname两个命令来获取当前路径或者某一路径的文件名和目录名。
3. 文件内容查询
3.1 直接查看文件内容
Linux中查看文件内容的命令有 cat tac nl more less head tail 和 od
cat 就是在屏幕上打印文件内容
tac 注意他是cat命令倒着写,因此就是在屏幕上倒着打印文件内容
nl 在屏幕上打印文件内容,并且标示行号。可以通过参数设定来控制是否为空行标记行数
more 仅仅在屏幕上打印文件内容一部分,并且显示当前打印部分占据文件大小的百分比,可以通过enter和space键来向下查询。通常more是无法往回翻页的
less 也是支持翻页查询文件内容,但是可以支持往回翻页。
head 命令是指打印出文件的前几行内容,我们可以通过-n 参数来设置打印的行数
tail命令是打印文件最后几行内容,同样可以通过-n 参数来设置打印出来的行数
od 命令是用来查看二进制文件的。通常二进制文件用其他命令查看会显示乱码,这时候就需要用od命令。
3.2 修改文件时间或者创建新文件
在这里我们就需要用到touch命令,其主要有两个作用。其一在于改变文件的文件属性,其二在于创建一个新的文件。
通常对于一个文件来说,有三种事件属性。修改内容属性,状态改变属性和访问属性,分别对应于mtime ctime 和 atime
因此在touch命令中,可以调用 -a 参数修改atime -m参数修改mtime -c 修改ctime
至于touch命令创建新文件就简单了,不用介绍。
4. 文件与目录的默认权限和隐藏权限
4.1 文件默认权限
通常我们在使用touch创建一个新文件或者使用mkdir创建一个新目录时,我们都会发现其默认的就带了一些rwx权限。这些权限就是针对于当前用户的文件目录默认权限。
我们可以用umask来查看当前用户的默认权限。额外说明的是在Linux中,一个文件被创建时默认不具有被执行权限,因此其最大权限数为666,而对于目录来说,x权限有时候是知道一个目录是否能够进入的权限,因此其最大权限数是777.
我们通过umask得知当前用户下的默认文件目录权限,再用文件的默认最大权限666和目录的最大权限777减去当前的umask权限,得到的就是在当前用户下我们创建一个新文件或者一个新目录的默认权限。
当让我们可以通过umask number命令来改变umask值。
4.2 文件隐藏属性
文件的隐藏属性一般只是在系统安全上面起着相当大的作用。在这里就介绍设置和查看文件隐藏属性的命令。
chattr 设置文件隐藏属性 比较重要的是 a 和 i 两个属性,a属性是使得文件只能增添数据,而不能修改和删除数据, i 属性则使得文件完全不能被动。
lsattr 命令就是查看文件的隐藏属性。
5 权限与命令间的关系
让用户能够进入某目录成为“可工作目录”的基本权限是什么?
至少需要x权限。x权限保证了目录能够被进入,但如果还需要其他操作,就需要添加其他权限
用户在某一个目录内能够读取文件的权限是什么?
对该目录来说,应该要有x权限,对于该文件来说,要有r权限。
用户可以修改一个目录内的文件的权限应该是什么?
对该目录来说,应该要有x权限,对于该文件来说,要有r、w权限。
让一个用户可以在目录下创建新文件或者文件夹的权限是什么?
用户必须都该文件夹拥有x和w权限
用户在某目录下执行某文件的权限是什么?
对该目录来说,应该要有x权限,对于该文件来说,要有x权限。