Unix 文件和目录管理全解析
1. 目录基础概念
在 Unix 系统里,目录是一个简单却重要的概念。它就像一个列表,包含了一系列文件名,每个文件名都对应着一个索引节点(inode)编号。这里,每个文件名被称为一个目录项,而文件名与 inode 编号的映射关系则被叫做链接。当我们使用ls命令查看目录内容时,看到的就是该目录下所有文件名的列表。
当用户尝试在某个目录中打开一个文件时,内核会在该目录的文件名列表中查找对应的文件名,从而找到其 inode 编号。接着,内核会将这个 inode 编号传递给文件系统,由文件系统根据它来确定文件在设备上的物理位置。
目录还可以包含其他目录,这种包含在另一个目录中的目录被称为子目录。除了文件系统树最顶层的根目录/之外,所有目录都是某个父目录的子目录。需要注意的是,根目录和根用户的主目录/root是不同的概念。
路径名由文件名及其一个或多个父目录组成。绝对路径名以根目录开头,例如/usr/bin/sextant;而相对路径名不以根目录开头,如bin/sextant。为了使相对路径名能正常使用,操作系统需要知道该路径所相对的目录,这个目录就是当前工作目录。
文件和目录名可以包含除/和空字符之外的任何字符。其中,/用于分隔路径名中的目录,空字符则用于终止路径名。不过,为了规范和兼容性,通常会将路径名的字符限制为当前区域设置下的有效可打印字符,甚至仅使用 ASCII 字符。由于内