之前已经讲述过linux文件目录结构,本篇文章讲述文件和目录管理
首先,区分下相对路径和绝对路径:
绝对路径:由根目录 / 写起,例如: /usr/share/doc
这个目录。
相对路径:不是由 / 写起,例如由 /usr/share/doc
要到 /usr/share/man
底下时,可以写成: cd ../man 这就是相对路径的写法,../man就是这种形式的就是相对路径
可以使用 man [命令] 或者 help [命令] 来查看各个命令的使用文档,如 :man cp
、help cp
。
这里说几个参数哦较多的命令
ls 命令,list 的缩写,是最常见的目录操作命令,其主要功能是显示当前目录下的内容。此命令的基本格式为:
[root@localhost ~]# ls [选项] 目录名称
列出了 ls 命令常用的选项以及各自的功能:
选项 | 功能 |
---|---|
-a | 显示全部的文件,包括隐藏文件(开头为 . 的文件)也一起罗列出来,这是最常用的选项之一。 |
-A | 显示全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录。 |
-d | 仅列出目录本身,而不是列出目录内的文件数据。 |
-f | ls 默认会以文件名排序,使用 -f 选项会直接列出结果,而不进行排序。 |
-F | 在文件或目录名后加上文件类型的指示符号,例如,* 代表可运行文件,/ 代表目录,= 代表 socket 文件,| 代表 FIFO 文件。 |
-h | 以人们易读的方式显示文件或目录大小,如 1KB、234MB、2GB 等。 |
-i | 显示 inode 节点信息。 |
-l | 使用长格式列出文件和目录信息。 |
-n | 以 UID 和 GID 分别代替文件用户名和群组名显示出来。 |
-r | 将排序结果反向输出,比如,若原本文件名由小到大,反向则为由大到小。 |
-R | 连同子目录内容一起列出来,等於将该目录下的所有文件都显示出来。 |
-S | 以文件容量大小排序,而不是以文件名排序。 |
-t | 以时间排序,而不是以文件名排序。 |
--color=never --color=always --color=auto | never 表示不依据文件特性给予颜色显示。 always 表示显示颜色,ls 默认采用这种方式。 auto 表示让系统自行依据配置来判断是否给予颜色。 |
--full-time | 以完整时间模式 (包含年、月、日、时、分)输出 |
--time={atime,ctime} | 输出 access 时间或改变权限属性时间(ctime),而不是内容变更时间。 |
注意,当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色(蓝色显示目录,白色显示一般文件)。
注意,Linux 系统中,隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!所以,不论是 Linux 还是 Windows 都可以非常简单地査看隐藏文件,只是在 Windows 中绝大多数的病毒和木马都会把自己变成隐藏文件,给用户带来了错觉,以为隐藏文件是为了不让用户发现。
不仅如此,这里的 ls 命令还使用了 -l 选项,因此才显示出了文件的详细信息,此选项显示的这 7 列的含义分别是:
如果想查看某个目录的详细信息,例如:
这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息。
如果想显示目录本身的信息,就必须加入 "-d" 选项。
touch 命令不光可以用来创建文件(当指定操作文件不存在时,该命令会在当前位置建立一个空文件),此命令更重要的功能是修改文件的时间参数(但当文件存在时,会修改此文件的时间参数)。
Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:
touch 命令的基本格式如下:
[root@localhost ~]# touch [选项] 文件名
选项:
YYMMDDhhmm
。可以看到,touch 命令可以只修改文件的访问时间,也可以只修改文件的数据修改时间,但是不能只修改文件的状态修改时间。因为,不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之改变(更新为操作当前文件的真正时间)。
cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能。
cp 命令的基本格式如下:
[root@localhost ~]# cp [选项] 源文件 目标文件
选项:
需要注意的是,源文件可以有多个,但这种情况下,目标文件必须是目录才可以。
如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统(Linux 文件系统)是如何工作的。在前面讲解了分区的格式化就是写入文件系统,而Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统,则可以参考图。
ext4 文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。
inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。大家如果仔细查看,就会发现 inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。
block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。
由此,我们可以知道以下 2 个重要的信息:
了解了 Linux 系统底层文件的存储状态后,接下来学习 ln 命令。
ln 命令用于给文件创建链接,根据 Linux 系统存储文件的特点,链接的方式分为以下 2 种:
ln 命令的基本格式如下:
[root@localhost ~]# ln [选项] 源文件 目标文件
选项:
创建硬链接:
[root@localhost ~]# touch cangls [root@localhost ~]# ln /root/cangls /tmp #建立硬链接文件,目标文件没有写文件名,会和原名一致 #也就是/tmp/cangls 是硬链接文件
创建软链接:
[root@localhost ~]# touch bols [root@localhost ~]# In -s /root/bols /tmp #建立软链接文件
注意的是,软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。
原文:https://www.cnblogs.com/longan-wang/p/15185266.html