目录与路径
复习
- 设备控制器与驱动程序:用统一接口隐藏硬件差异
- 查询、中断与 DMA:CPU 参与设备传输的程度怎样逐步降低
- 文件与文件描述符:把设备和持久数据变成可读写的字节流
TL;DR
- 文件一多,就需要组织:用目录把它们分门别类
- 目录本身也可以装目录,于是形成一棵树
- 路径就是从根(或当前目录)走到某个文件的“路线”
- 有绝对路径和相对路径两种写法
正文
一个系统里可能有成千上万个文件。全都堆在一起,找起来就是灾难。于是人们又用上了老办法:分类,再用名字定位。
目录
目录(directory)是一种特殊的文件,里面记的是“名字 → 文件”的对应关系。
你可以把目录想成文件夹:它本身不装内容,只装“有哪些条目”。这些条目,可以指向普通文件,也可以指向另一个目录。
一棵树
既然目录里能放目录,层层嵌套下去,所有文件就组织成一棵树:
/ (根)
├── home/
│ └── alice/
│ ├── notes.txt
│ └── projects/
│ └── demo.txt
└── etc/
└── config
树形结构的好处很直观:文件被分门别类,重名也不会冲突(不同目录下的 notes.txt 互不干扰),找起来也只需沿着树枝走。
路径
要找到树里的某个文件,得给出从某处走到它的“路线”,这就是路径(path)。常见有两种写法:
- 绝对路径:从根
/出发,一路写全,比如/home/alice/notes.txt。不管当前在哪,它都能唯一定位。 - 相对路径:从“当前所在目录”出发,比如你在
/home/alice时,直接写notes.txt或projects/demo.txt。
路径里的 / 是分隔符,把一层层目录分开。“从根出发”还是“从脚下出发”,就是绝对与相对的区别。
名字的另一层抽象
注意,文件名和文件本身是分开的:同一个文件可以有多个名字,多个名字也可以指向同一个文件。目录记录的只是“名字到文件”的映射,文件真正存放在哪里,由文件系统在更底层决定。
于是又一层抽象把我们从“磁盘扇区”里解放出来:用名字和路径来指代数据,而不必关心它到底躺在哪。 那么,这些名字最终是怎样落到磁盘上的?下一章,我们看文件在磁盘里的真实样子。
思考题
为什么目录要用“树”来组织,而不是把所有文件平铺成一个长长的列表?树形结构在查找和管理上各有什么好处?
小结
知识点
- 目录:记录“名字到文件”映射的特殊文件
- 目录可嵌套,构成树形结构
- 路径定位文件,分绝对路径与相对路径
- 名字与文件分离,便于管理和共享
参考资料
- Wikipedia(zh):目录:directory
- Wikipedia(zh):路径:path
- Wikipedia(zh):文件系统:file system
思考题答案(仅供参考)
平铺成一个长列表,文件一多就难以查找、容易重名、也无法体现归属关系。树形结构则有几大好处:分类清晰,相关文件聚在一起;重名无碍,不同分支可以同名;定位高效,沿路径逐级查找即可,而不必扫描全表;权限和命名空间也更好管理。就连删除、移动一个目录,也能连带处理整棵子树。树把“大量对象”变成“有层次的少量选择”,这正是它被普遍采用的原因。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪