面向初学者的 Linux 目录结构说明
如果您对 Linux 稍有了解,您可能听说过 root、lib、bin 等术语。这些是您可以在所有 Linux 发行版中找到的各种目录。
事实上,Linux 基金会维护着一个文件系统层次结构标准(FHS)。这个 FHS 定义了 Linux 发行版中的目录结构和目录的内容/用途。得益于这个 FHS,您会在 (几乎) 所有 Linux 发行版中找到相同的目录结构。
我们来详细看看Linux目录结构。
Linux 目录结构
Linux 基于 UNIX,因此它借用了 UNIX 的文件系统层次结构。您会在 BSD 和 macOS 等类 UNIX 操作系统中发现类似的目录结构。不过,我以后将使用术语 Linux 而不是 UNIX。
/ – 根目录
Linux 中的所有内容(所有文件和目录)都位于“根”下,以“/”表示。如果您查看目录结构,就会发现它类似于植物的根。
由于所有其他目录或文件都源自根目录,因此任何文件的绝对路径都通过根目录遍历。例如,如果您在 /home/user/documents 中有一个文件,您可以猜测目录结构为 root->home->user->documents。
残酷的 rm -rf / 笑话
你可能在网上看到过一些提到“rm -rf /”的笑话。rm 命令用于在 Linux 中删除文件和目录。
使用 rm -rf /,你要求系统强制且递归地删除根目录的内容。 由于根目录下有所有内容,你最终会删除所有内容,而你的 Linux 系统就会消失(理论上)。
除非你提供 –no-preserve-root,否则大多数 Linux 发行版都不会运行此命令。 无论如何,不要好奇地运行此命令。 毕竟,好奇害死猫。
/bin – 二进制文件
'/bin' 直接包含许多基本 shell 命令(如 ls、 cp、cd等)的可执行文件。这里的程序大多为二进制格式,Linux 系统中的所有用户都可以访问。
/dev – 设备文件
此目录仅包含特殊文件,包括与设备相关的文件。这些是虚拟文件,并不实际存在于磁盘上。
这些文件的一些有趣的例子是:
- /dev/null:可以发送以销毁任何文件或字符串
- /dev/zero:包含无限的 0 序列
- /dev/random:包含无限的随机值序列
/etc – 配置文件
/etc 目录包含系统的核心配置文件,主要由管理员和服务使用,例如密码文件和网络文件。
如果您需要更改系统配置(例如,更改主机名),则可以在 etc 文件夹中找到相应的文件。
/usr – 用户二进制文件和程序数据
'/usr' 包含所有可执行文件、库、大多数系统程序的源代码。因此,其中包含的大多数文件都是只读的(对于普通用户而言)
- '/usr/bin' 包含基本用户命令
- '/usr/sbin' 包含管理员的附加命令
- '/usr/lib' 包含系统库
- '/usr/share' 包含所有库的文档或公共文档,例如 '/usr/share/man' 包含手册页的文本
/home – 用户个人数据
主目录包含用户的个人目录。主目录包含用户数据和用户特定的配置文件。作为用户,您会将个人文件、笔记、程序等放在主目录中。
在 Linux 系统上创建用户时,通常的做法是为用户创建主目录。假设您的 Linux 系统有两个用户,Alice 和 Bob。他们将在 /home/alice 和 /home/bob 位置拥有自己的主目录。
请注意,Bob 将无权访问 /home/alice,反之亦然。这是有道理的,因为只有用户才有权访问他/她的主页。您可以阅读有关Linux 中的文件权限以了解有关此主题的更多信息。
/lib – 共享库
库基本上是可执行二进制文件可以使用的代码。/lib 目录包含 /bin 和 /sbin 目录中的二进制文件所需的库。
/usr/bin 和 /usr/sbin 中的二进制文件所需的库位于 /usr/lib 目录中。
/sbin – 系统二进制文件
这类似于 /bin 目录。唯一的区别是它包含只能由 root 或 sudo 用户运行的二进制文件。您可以将“sbin”中的“s”视为 super 或 sudo。
/tmp – 临时文件
顾名思义,此目录用于存放临时文件。许多应用程序都使用此目录来存储临时文件。甚至您也可以使用目录来存储临时文件。
但请注意,系统重新启动时,/tmp 目录的内容将被删除。某些 Linux 系统还会自动删除旧文件,因此不要在此处存储任何重要内容。
/var – 变量数据文件
Var 是变量的缩写,是程序存储运行时信息的地方,例如系统日志、用户跟踪、缓存以及系统程序创建和管理的其他文件。
此处存储的文件不会自动清理,因此它为系统管理员提供了查找有关其系统行为的信息的好地方。例如,如果您想检查 Linux 系统中的登录历史记录,只需检查 /var/log/wtmp 中文件的内容即可。
/boot – 启动文件
“/boot”目录包含内核和启动映像文件,以及 LILO 和 Grub。通常建议将该目录放在磁盘开头的分区中。
/proc – 进程和内核文件
/proc 目录包含有关当前正在运行的进程和内核参数的信息。proc 目录的内容被许多工具用来获取运行时系统信息。
例如,如果你想在 Linux 中检查处理器信息,你可以简单地参考文件 /proc/cpuinfo。你想检查 Linux 系统的内存使用情况,只需查看 /proc/meminfo 文件的内容。
/opt – 可选软件
传统上,/opt 目录用于安装/存储发行版存储库中没有的第三方应用程序的文件。
正常的做法是将软件代码保存在opt中,然后链接/bin目录中的二进制文件,以便所有用户都可以运行它。
/root – 根目录
还有 /root 目录,它是 root 用户的主目录。因此,root 的主目录位于 /root,而不是 /home/root。不要将其与根目录 (/) 混淆。
/media – 可移动媒体的挂载点
当您连接可移动媒体(例如 USB 磁盘、SD 卡或 DVD)时,系统会在 /media 目录下自动为它们创建一个目录。您可以从此目录访问可移动媒体的内容。
/mnt – 挂载目录
这类似于 /media 目录,但不是自动挂载可移动媒体,而是由系统管理员使用 mnt 手动挂载文件系统。
/srv – 服务数据
/srv 目录包含系统提供的服务的数据。例如,如果您运行 HTTP 服务器,则最好将网站数据存储在 /srv 目录中。
我认为这么多信息足以让您了解 Linux 目录结构及其用法。
最后,如果您愿意,您可以下载并保存此图像,以便快速参考 Linux 文件系统层次结构标准。