⭐ 中优先级
选择题中会考察 目录 以及 硬链接和软链接 的概念。
目录概念
目录是计算机文件系统中用于组织和存储文件和其他目录的一种 重要概念 。目录也被称为文件夹,它是文件系统中的一个 关键组成部分 ,用于创建层次结构,方便用户管理和浏览文件。
树形目录
树形目录是一种 层次化 的文件组织结构,就像一棵倒置的树:
- 根目录(Root) 是整个目录结构的起点,通常记为
/。 - 根目录 下可以包含多个 子目录 和 文件 ,每个 子目录 下又可以包含更多的目录或文件,以此类推。
- 每个目录都可以看作是一个 节点 ,通过 路径 连接起来,形成一棵树。
举例目录结构如下(见图):
示例路径:
/docs/report.txt:表示在 根目录 下的docs子目录 中存在一个名为report.txt的 文件 。/img/photos/summer.jpg:表示 文件summer.jpg位于img/photos/目录 下。
这种结构具备以下特点:
- 层次清晰 :便于用户查找和管理文件
- 路径唯一性 :每个文件或目录都有 唯一的绝对路径
- 支持相对路径 :可使用
.表示当前目录,..表示上级目录
存储结构
在文件系统中,目录本质上就是一个 特殊类型的文件 ,它的“内容”是一个个 目录项 (directory entry),用于记录当前目录下的 文件 和 子目录 的名字,以及它们对应的 inode 编号。
下图给出了目录的核心简化结构🧩:
目录文件内容(一个个目录项): ┌────────────────────────────┐ │ 文件名:. → inode 100 │ ← 当前目录 │ 文件名:.. → inode 99 │ ← 父目录 │ 文件名:a.txt → inode 123 │ │ 文件名:docs/ → inode 200 │ │ 文件名:img.jpg → inode 150 │ └────────────────────────────┘
每个 目录项 包括:
- 文件名(如 “a.txt”)
- 对应的 inode 编号(如 123),通过 inode 号查询 inode表 可以获取文件的元信息。
这些信息保存在磁盘上的 目录文件 中,文件系统通过这些记录来解析 路径 。
操作
树形目录不仅提供了结构化的存储方式,用户还可以通过命令行对 目录 和 文件 进行多种操作:
- 📁 目录操作
- 📄 文件操作
- 📍 路径导航命令
mkdir dir_name # 创建新 目录 mv old_dir new_dir # 移动或重命名 目录 rm -r dir_name # 递归删除 目录 及其内容 ls -l dir_name # 列出 目录 内容(详细信息)
touch filename # 创建一个空 文件 rm filename # 删除 文件 mv old new # 重命名或移动 文件 cp src dest # 复制 文件 cat filename # 显示 文件 内容
cd /path/to/dir # 进入指定 目录(绝对路径) cd .. # 返回上级 目录 cd # 回到当前用户的主 目录 pwd # 显示当前 路径
文件链接
在 Linux 文件系统中,一个文件的 “名字” 其实只是 目录项 中的一个 链接 (link)。文件的实际内容和元信息是保存在 inode 中的,而 文件名 只是“指向这个 inode 的引用”。基于这一设计,系统允许我们为同一个文件创建多个“名字”,这些名字就是所谓的 文件链接 。
文件链接 分为两种:硬链接 和 软链接 ,它们实现方式不同,行为也有所差异。
硬链接
硬链接(hard link)的本质,是在文件系统的目录存储结构中,为同一个 索引节点 (inode)创建多个目录项 。这些目录项分别对应不同的 文件名 ,但它们都指向同一个 inode ,从而共享同一份 文件数据 。
在 Linux 中你可以使用命令 ln A D 创建 A 的硬链接 D,它的含义是:在当前目录下创建一个名为 D 的 新目录项 ,该目录项与 A 指向同一个 inode ,从而实现两个文件名共享同一份文件内容。
123456 -rw-r–r– 2 user group 6 Jul 2 A 123456 -rw-r–r– 2 user group 6 Jul 2 D
执行上述创建硬链接的命令后,系统中的目录会变为如下结构(简化):

因此,硬链接实现了 多个文件名访问同一个文件内容 的效果:
- 所有硬链接文件 共享同一个 inode 号 ,指向同一个数据块,不会创建数据副本;
- 删除某一个硬链接,只是移除了对应的 目录项 ,并减少 inode 的 链接计数 ,不会影响其他链接;
- 只有当所有指向该 inode 的 目录项 都被删除时,该 inode 所占的数据块才会真正被释放;
- 出于文件系统一致性考虑,硬链接 不能用于目录 ,以防目录结构形成环;
- 硬链接 仅限于同一个文件系统内部 ,不能跨越挂载点或磁盘分区。
软链接
软链接(也叫做 符号链接 ,symbolic link)的本质,是在文件系统中 创建一个特殊类型的文件 ,其内容是 指向目标文件路径的字符串 。软链接自身拥有独立的 inode 和数据块,但并不直接指向目标文件的 inode,而是通过路径进行间接访问。
在 Linux 中你可以使用命令 ln -s A L 创建 A 的软链接 L,它的含义是:在当前目录下创建一个名为 L 的链接文件,其内容是 "A",即指向 文件 A 的路径。
123456 -rw-r–r– 1 user group 6 Jul 2 A 234567 lrwxrwxrwx 1 user group 1 Jul 2 L -> A
执行上述创建软链接的命令后,系统中的 目录结构 会变为如下形式(简化):

因此,软链接实现了 路径级别的引用关系 ,其行为特性如下:
- 软链接是一个 独立的文件 ,拥有自己的 inode 和数据块,数据块中存储的是目标路径(如
"A"); - 删除原文件后,软链接不会失效为独立文件,但会变成 悬挂链接 (dangling link),无法再访问目标内容;
- 软链接 可以跨文件系统使用 ,也可以链接 目录 ,灵活性更高;
- 访问软链接时,系统会先读取其 路径内容 ,再根据该路径查找目标文件;
- 文件属性 显示中,软链接使用
l类型标识,显示类似L -> A的引用关系。
相关笔记
- 内存管理概念
- 内存管理
- 虚拟内存管理