如果您甚至对 Linux 稍有了解,您可能听说过 root、lib、bin 等术语。这些是您可以在所有 Linux 发行版中找到的各种目录。
事实上,Linux 基金会维护着一个 文件系统层次标准 (FHS)。 该 FHS 定义了 Linux 发行版中的目录结构和目录的内容/用途。 多亏了这个 FHS,您将在(几乎)所有 Linux 发行版中找到相同的目录结构。
让我们详细看看Linux目录结构。
Linux目录结构
Linux 基于 UNIX,因此它借鉴了 UNIX 的文件系统层次结构。 您将在 BSD 和 macOS 等类 UNIX 操作系统中使用类似的目录结构。 不过,我以后将使用术语 Linux 而不是 UNIX。
/ – 根目录
Linux 中的所有内容,所有文件和目录都位于由“/”表示的“根”下。 如果您查看目录结构,您会发现它类似于植物的根。
由于所有其他目录或文件都来自根目录,因此任何文件的绝对路径都经过根目录遍历。 为了 example,如果你在/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 目录包含系统的核心配置文件,主要由管理员和服务使用,例如密码文件和网络文件。
如果您需要更改系统配置(例如 example 更改主机名),您可以在此处找到相应的文件。
/usr – 用户二进制文件和程序数据
在 ‘/usr’ 中可以找到大部分系统程序的所有可执行文件、库和源代码。 因此,其中包含的大多数文件都是只读的(对于普通用户)
- ‘/usr/bin’ 包含基本的用户命令
- ‘/usr/sbin’ 包含管理员的附加命令
- ‘/usr/lib’ 包含系统库
- ‘/usr/share’ 包含所有库的文档或通用文档,例如 example ‘/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 是变量的缩写,是程序存储运行时信息的地方,例如系统日志记录、用户跟踪、缓存以及系统程序创建和管理的其他文件。
此处存储的文件不会自动清理,因此它为系统管理员提供了一个查找有关其系统行为的信息的好地方。 为了 example如果你想在你的 Linux 系统中查看登录历史,只需查看 /var/log/wtmp 中文件的内容即可。
/boot – 引导文件
除了 LILO 和 Grub 之外,’/boot’ 目录还包含内核和引导映像的文件。 通常建议该目录位于磁盘开头的分区中。
/proc – 进程和内核文件
‘/proc’ 目录包含有关当前正在运行的进程和内核参数的信息。 许多工具使用 proc 目录的内容来获取运行时系统信息。
为了 example,如果你想在Linux中查看处理器信息,你可以简单地参考文件/proc/cpuinfo。 您想检查您的 Linux 系统的内存使用情况,只需查看 /proc/meminfo 文件的内容。
/opt – 可选软件
传统上,/opt 目录用于安装/存储无法从发行版存储库中获得的第三方应用程序的文件。
通常的做法是将软件代码保留在 opt 中,然后将二进制文件链接到 /bin 目录中,以便所有用户都可以运行它。
/root – 根目录的主目录
还有 /root 目录,它作为 root 用户的主目录。 因此,root 的主目录不是 /home/root,而是位于 /root。 不要将其与根目录 (/) 混淆。
/media – 可移动媒体的挂载点
当您连接 USB 磁盘、SD 卡或 DVD 等可移动媒体时,会在 /media 目录下自动为它们创建一个目录。 您可以从此目录访问可移动媒体的内容。
/mnt – 挂载目录
这类似于 /media 目录,但不是自动挂载可移动媒体,系统管理员使用 mnt 手动挂载文件系统。
/srv – 服务数据
/srv 目录包含系统提供的服务的数据。 为了 example,如果您运行 HTTP 服务器,最好将网站数据存储在 /srv 目录中。
我认为这么多信息足以让您了解 Linux 目录结构及其用法。
最后,如果需要,您可以下载并保存此图像,以便快速参考 Linux 系统中的目录结构。