Appearance
第 05 课 · 文件系统与沙盒
仓库怎么编号、隔间为什么删不干净。
作者:曹宇春
先记住这个类比
- 硬盘 = 大仓库
- 文件 = 一份档案
- 文件夹 = 柜门上的分类标签
- inode = 档案袋里的 目录卡:大小、权限、数据在仓库哪几排
- 文件名 = 贴在外面的标签(可换名,目录卡还在)
沙盒 / Containers ≈ 部门 只能进自己的私人隔间,翻不了整栋楼。
正式概念(人话版)
名字 → inode → 数据块
删除文件 ≈ 从目录索引划掉名字;若没有其他标签指向同一 inode,总管才回收空间。
常见路径(macOS)
| 路径 | 类比 |
|---|---|
/Applications | 软件安装区 |
~/Documents | 你的个人档案柜 |
~/Library | 应用私货与缓存(最易「占着茅坑」) |
/System | 核心档案室(受保护) |
APFS(你 Mac 常用)
针对 SSD 优化;支持加密、快照等。
改文件常走类似「先复印再改」的路径(利于安全与 Time Machine,细节进阶再学)。
卸载 ≠ 清空
删掉 .app ≈ 只撤 前台工位。~/Library/Containers、Application Support ≈ 私人档案柜——人走了柜子可能还在。所以会「App 没了,磁盘还是大」。
在你电脑上看一眼
bash
# 各分区容量
df -h
# 家目录哪些大户(可能较慢)
du -sh ~/Library ~/Documents ~/Downloads 2>/dev/null
# inode 是否用尽(少见但真实)
df -i /磁盘「满」两种:
- 空间满——仓库塞满
- inode 满——档案编号用完(小文件海量时)
开发里什么时候用得上
- 磁盘 >75% 时编译、索引、Docker 镜像会变肉
- 清理优先:微信 / 下载 / Library 缓存 / 旧 Node 版本,比纠结清不掉的空壳 Containers 更值
- 权限
rwx:谁拥有档案、部门同事能不能写——部署踩坑常出在这里
练习
df -h看可用空间;若 <50GB,列一个你愿意删的清理清单。- 找一个已卸载 App,看
~/Library里是否还有残留目录名。
小结
- 文件名是标签,inode 是目录卡,数据在块里
- 沙盒隔间保护隐私,也造成「删 App 不解耦数据」
- 空间与 inode 都可能成为仓库瓶颈
下一课:寄合同——网络栈。