对话 UNIX,第 11 部分: 漫谈 UNIX 文件系统

刚刚购买了一个全球定位系统(GPS)导航设备,仅仅使用了几次之后,我就迷上了它 。从点 A 到点 B,现在是轻而易举的事情 。不再需要到 MapQuest 网站上去查询地图了 。不再需要猜测哪边是东 。不再需要在远离城市的农村地区中途停车以询问方向 。我只需要跳进我的车,指定我的目的地,并遵循语音提示即可 。为什么呢?GPS 使我看起来就像一个本地居民,它为 Buckaroo Banzai 的格言“无论您去哪里,您就在那里赋予了新的含义 。本月,让我们纵情满足自己的旅行爱好,并且漫谈 Unix?文件系统 。从 /bin 到 /var,有许多有趣的景点值得一看(一些经常有人走过,还有一些则很隐秘),并且很快您将会像当地居民一样熟悉周围的环境了 。
文件名称的含义
UNIX 计算机上的文件采用层次结构进行组织 。这个层次结构的最高层是 /,一般称其为“斜线或者“根目录 。
如果您将工作目录更改为 /,并运行 ls,那么您将看见几个具有神秘名称的子目录(如 etc、bin、var、home 和 tmp) 。尽管 UNIX 现在支持长文件名,但是这些顶层目录名字中的大多数可以追溯到大约 30 年前,即 UNIX 刚刚出现的时候 。类似地,根据同样长期存在的约定,包含在 / 中的每个目录都用于某个特殊的目的:
/bin 仅仅是包含应用程序和实用工具的许多目录中的一个 。然而,/bin 通常包含那些对于系统操作而言基本的实用工具 。因此,Shell 文件操作命令如 cp 和 chmod、压缩和解压缩,以及诊断命令都位于 /bin 中 。/sbin 同样包含那些对于系统操作和维护而言至关重要的实用工具 。然而,只有超级用户才能够执行 /sbin 中的程序,因此这个目录称为“superuser-bin或者 /sbin 。
/dev 包含您的系统中所安装的所有硬件,包括终端和 USB 设备(以及从物理上连接到这台计算机的其他外围设备)、伪终端(用于与 X 终端窗口进行交互),以及硬盘驱动器,等等 。
/etc(常常发音为“etsee)专门用于系统配置 。/etc 目录包含用于系统守护进程、启动脚本、系统参数和更多其他方面的配置文件 。
【对话 UNIX,第 11 部分: 漫谈 UNIX 文件系统】/home 包含用户的 home 目录 。例如,如果您的登录名是 joe,那么目录 /home/joe 就是您的个人文件存储库 。
/lib 用于存储基本的系统库文件 。在现代 Unix 中,通常共享系统库,这意味着并不是每个二进制文件都链接和包括这些库(那样的话,至少将会浪费空间),但是当需要该库的时候,按需要加载它,并且同时可以由许多应用程序进行共享 。因此,与 UNIX 一同安装的核心应用程序和实用工具的运行都需要使用 /lib 中的库,并且您至少需要拥有少量相应的库文件,以便从源代码创建新的可执行文件 。其中所有的文件都是至关重要的,损坏或者删除(无论是有意的还是无意的)某个文件就可能使系统变得无法使用 。
/mnt 是“mount的缩写,是装入硬盘驱动器分区和其他设备的标准位置 。如果您希望查看当前装入的并且可访问的所有设备,只需要运行 mount 命令 。
/tmp 或者“temporary,是系统范围的暂存存储区 。您的 Web 服务器可能会将会话数据文件保存在这里,并且其他实用工具将使用 /tmp 中的空间对中间结果进行缓存 。通常认为 /tmp 中的文件在使用后即被丢弃 。实际上,您的系统管理员可能会在每天晚上删除其中比某个过期时间更早的所有文件 。
/usr 用于存储大量文件 。最终用户应用程序(从编辑器、游戏和接口,到系统特性)都位于其中,它是 man 页面和其他更多内容的存储库 。有些文件很有价值,但并不是系统操作所必须的,那么您很可能会在 /usr 中找到它 。

推荐阅读