下表列出了 Linux 系统中常见的目录结构,使用之前学过的命令去那些目录探索一下吧:

  • cd 切换目录
  • ls 列出目录中的内容
  • file 检查文件内容类型
  • less 查看文件文本内容
目录 描述
/ 根目录是文件系统的起点。绝大多数情况下,根目录只包含子目录。
/boot Linux kernel 和 boot loader 文件存放于此。kernel 是一个被称之为 vmlinuz 的文件。
/etc /etc 目录用来存放系统的配置文件。 /etc 中的文件都应该是文本文件。 几个有趣的子目录:
/etc/passwd
The passwd 文件包含每一个用户必须的信息,用户就是在这个文件中定义的。
/etc/fstab
The fstab 用于定义磁盘驱动,文件中有一个开机自动挂载的设备表。
/etc/hosts
此文件用以列出系统内部已知的设备主机名和IP地址。
/etc/init.d
此目录放置很多程序的服务启动脚本
/bin, /usr/bin 这两个目录放置几乎所有的系统程序。/bin 目录中是那些系统运作必不可少的程序。/usr/bin 目录中是那些系统用户的程序。
/sbin, /usr/sbin sbin 目录中是那些系统管理员的程序,通常是超级用户的程序。
/usr /usr 目录中包含各种用户应用程序的支持文件,包括:
/usr/share/X11
X Window 的支持文件
/usr/share/dict
用于拼写检查的字典。
/usr/share/doc
各种格式的文档
/usr/share/man
手册文件
/usr/src
源代码文件。如果你安装了内核源码包,这里就能找到完整的 Linux 内核源码
/usr/local /usr/local 这里安装那些供本机使用且不在官方发行版中提供的第三方程序
当你找到有趣的程序要安装时,通常应该安装到 /usr/local,更准确的说应该是 /usr/local/bin
/var /var 目录中包含那些会随着系统运行而发生变化的文件。他们包括:
/var/log
目录存放日志文件。它们的内容会随着系统的运转自动更新。你应该实时查看这些文件以确保系统的健康。
/var/spool
此目录用来存放将被执行的队列文件,例如邮件和打印任务。假设本机配置了邮件服务器,当有邮件发送到本机时,消息就会被存储在 /var/spool/mail
/lib The shared libraries (similar to DLLs in that other operating system) are kept here. 共享库文件(类似于 Windows 中的 DLLs)
/home /home 是用户存个人文件的位置。通常来讲,家目录是用户唯一具有写权限的位置,这样能够确系统保干净整洁。
/root 超级用户的家目录
/tmp /tmp 为程序提供的具有写权限的临时目录
/dev The /dev 是一个特殊目录,因为它实际上并不包含通常意义上的文件,而是包含可供系统使用的设备。在 Linux 系统中,设备也被视为文件的一种,你可以像对待文件一样读写设备。例如:/dev/fd0 是一个软驱,/dev/sda是一块硬盘。内核能够识别的设备都会显示在这里。
/proc /proc 目录也很特殊,它并不包含文件。事实上,这个就不是一个真实的目录,它完全是虚拟的。/proc 目录中包含一组带编号的条目,对应系统上运行的所有进程。另外,还有许多带有明确名字的条目可以方便我们了解系统的当前配置,它们大多可以查看。试着查看 /proc/cpuinfo,它会告诉你内核如何解读你的 CPU 信息。
/media,/mnt /media 是一个有特殊用途的常规目录。/media 常被用作 挂载点。正如我们在 导航命令 中学到的那样,不同的物理存储设备(如硬盘)会通过一个特别的位置附加到文件系统树中。这种将设备附加到目录树的过程称之为 挂载。设备只有先被挂载才能被使用。

系统在启动时会从 /etc/fstab 文件中读取要挂载的设备信息,哪个设备,挂载到系统树目录下的哪个位置上。这里通常挂载硬盘驱动器,但你也可以根据需要挂载光驱、优盘或软盘。不过由于他们是可移动设备,因此不会始终保持挂载。/media 目录主要面向现代 Linux 桌面操作系统发型版的设备自动挂载机制。那些需要在系统上手动挂载的设备,则通常挂载到 /mnt 目录。

一些奇怪的文件

在各个 Linux 系统目录中你可能会注意到一些陌生的目录,特别是在 /boot/lib 目录中。当使用 ls -l 查看目录内容时就会看到类似下面的一些文件:

lrwxrwxrwx     25 Jul  3 16:42 System.map -> /boot/System.map-2.0.36-3
-rw-r--r-- 105911 Oct 13  1998 System.map-2.0.36-0.7
-rw-r--r-- 105935 Dec 29  1998 System.map-2.0.36-3
-rw-r--r-- 181986 Dec 11  1999 initrd-2.0.36-0.7.img
-rw-r--r-- 182001 Dec 11  1999 initrd-2.0.36.img
lrwxrwxrwx     26 Jul  3 16:42 module-info -> /boot/module-info-2.0.36-3
-rw-r--r--  11773 Oct 13  1998 module-info-2.0.36-0.7
-rw-r--r--  11773 Dec 29  1998 module-info-2.0.36-3
lrwxrwxrwx     16 Dec 11  1999 vmlinuz -> vmlinuz-2.0.36-3
-rw-r--r-- 454325 Oct 13  1998 vmlinuz-2.0.36-0.7
-rw-r--r-- 454434 Dec 29  1998 vmlinuz-2.0.36-3

注意看 System.mapmodule-infovmlinuz,文件名后面奇怪的符号。

这种文件被称为符号链接。符号链接是一种特殊类型的文件,它指向另一个文件。有了符号链接,一个文件就可以同时拥有多个文件名。在系统中符号链接总是透明的指向实际的文件。

符号链接是很有用的功能,当存在多个文件版本容易导致混淆的情况时,就可以通过创建一个名字简单的符号链接,指向那个真正要使用的文件即可。

使用 ln 命令创建符号链接。

Reference