我们购买的计算机一般都配置Windows操作系统,它的文件系统结构是树形目录结构,最顶层是盘符(C:、D:、E:、……),每个分区是独立的一棵目录树。
典型结构

Linux系统的文件结构也采用树形结构,与Windows的区别是没有盘符的概念,整个系统只有一棵目录树,所有存储设备、文件、目录都从唯一的根目录 / 开始,向下层层延伸,不存在 C:、D: 这类磁盘分区标识。这种统一的结构设计,能够让不同硬件设备、不同分区的文件都能以统一的方式被访问,核心遵循“一切皆文件”的理念——无论是硬件设备、目录、普通文件,都以文件的形式呈现和管理。
为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard 文件系统层次结构标准),大多数Linux都采用如下图所示的文件组织形式,目录结构也都是相似的。

一、系统核心目录
1、bin目录
Linux系统内置了很多便捷的操作命令,这些命令本质上就是编译完成的可执行应用程序,它们存储的位置就是bin目录。例如ls(查看目录)、cp(复制文件)、mkdir(创建目录)等最常用的命令,都位于此目录。bin目录的作用就是提供最基础、最常用的系统操作功能。
bin目录的文件不能进行删除和修改操作,一旦删除一旦删除或损坏,系统会直接瘫痪、无法使用。
2、etc目录
etc是linux系统的配置目录,用来存储系统工具或应用程序的配置文件。如网络连接、用户权限设置、系统服务设置等配置文件都存储在该目录。这些配置文件基本都是文本文件,可以使用cat命令查看配置文件,也可以使用vi命令修改配置文件。下面给出几个使用etc目录下配置文件的案例。
案例1:查看系统用户
输入下面的命令:
cat /etc/passwd | grep “/bin/bash”
命令输出结果:

cat/etc/passwd命令会显示当前所有用户,包括真实用户和系统用户,使用grep“/bin/bash”参数来过滤掉系统用户,只显示真实用户。
案例2:查看网络配置
输入下面的命令:
命令输出结果:

上图给出了是 Ubuntu 虚拟机的网络默认配置。你也可以使用vi命令来修改这个配置文件,修改后会立即生效。
注意:修改此目录下的文件需要特别谨慎,错误配置可能导致系统无法正常运行。
3、lib和lib64目录
lib目录主要存放系统运行所需的共享库文件(类似Windows的dll文件),是所有可执行程序(尤其是/bin和/sbin下的命令)的依赖。其中/lib对应32位系统,/lib64对应64位系统,库文件的缺失会导致依赖该库文件的程序无法启动。
4.proc目录
proc目录存储的是内存数据,该目录存储的数据不占用硬盘存储空间,因为内存数据是内存的映像,这些数据都在内存中存储。
它主要用来存放当前系统内核、进程、硬件、内存、CPU等实时运行数据,系统工具通过读取该目录获取运行状态,管理员也可直接查看或微调内核参数,是了解和监控 Linux 系统的重要目录。
例如,我要查看CPU信息。在proc目录下会有一个cpuinfo文件,该文件存储了cpu的信息。我们可以使用 cat 命令读取该文件,将文件内容输出到控制台。cat 是 Linux 中最常用的文本查看命令:
二、用户目录
1.home目录
home 目录是 Linux 系统中普通用户的主目录集合。系统会为每一位普通用户,在此目录下创建一个与用户名同名的子目录,作为该用户专属的工作空间。例如用户名为 zhangsan,其对应的主目录就是 /home/zhangsan。
用户的个人文档、下载文件、桌面内容、软件配置等数据,都会默认存放在自己的主目录内,功能上类似于 Windows 系统中的我的文档”+“桌面”+“用户文件夹”。
普通用户对自己的主目录拥有完整的读写、修改、删除权限;但对于其他用户的主目录,默认只有基本的查看权限,无法随意修改或删除他人文件。
例如:
用户 lisi 登录系统,进入自己的目录:/home/lisi。他可以在这里任意新建、编辑、=和删除文件。但无权对用户 wangwu 的目录 /home/wangwu进行操作,仅有查看部分文件内容的权限,但不能修改、删除和新建文件。这种权限机制既保证了个人用户数据独立,又实现了多用户之间数据的安全隔离。
三、存储目录
1.var目录
var目录全称是 variable,即可变的意思。主要存储系统动态变化的数据。如系统日志文件会随系统的运行时间不断增长,web服务器的网站根目录如Apache、Tomcat、Nginx也会随运行时间发生动态变化。var目录就是用来存储这些随系统运行时间动态发生变化的数据。
2.mnt目录
我们知道在Linux系统中,核心遵循“一切皆文件”的理念——无论是硬件设备、目录、普通文件,都以文件的形式呈现和管理。如果我们在电脑中插入一个U盘,Linux系统文件结构会发生什么变化呢?
其实系统目录树本身并不会凭空多出一个 “U 盘文件夹”,系统会先在 /dev 目录下,给这个 U 盘生成一个设备文件(如 /dev/sdb1),但你直接点开这个文件是看不到里面照片、文档的,它只是代表硬件本身。想要真正访问 U 盘里的内容,就需要用到挂载(mount),把这个硬件设备文件 “挂靠” 到某个空目录上,最常用的就是 mnt目录 或 media 目录。
挂载完成后,进入挂载目录(如/mnt/usb),看到的就不再是空文件夹,而是U 盘里的所有文件,对这个目录的复制、删除、修改,其实都是在操作 U 盘里的数据。
四、设备目录
1、dev目录
在 Linux 里,键盘、鼠标、显示器、硬盘、U 盘、显卡、打印机…… 全都是文件,这些文件称为设备文件,统一存放在dev目录里。这些设备文件不存真实数据,只代表硬件本身,想访问硬件,必须先找到dev 里对应的文件。
SCSI/SATA/USB 设备:命名通常以 sd 开头。例如,/dev/sda 代表第一块硬盘,/dev/sda1 是它的第一个分区;/dev/sdb 通常是插入的 U 盘或第二块硬盘。
NVMe 固态硬盘:命名较特殊,以 nvme 开头。例如,/dev/nvme0n1 是第一块 NVMe 盘,/dev/nvme0n1p1 是它的第一个分区。
键盘、鼠标:通常在 /dev/input/ 目录下,如 /dev/input/mouse0(鼠标)、/dev/input/event0(键盘事件)。
五、应用和资源目录
1、usr目录
在Linux系统中,Linux提供了usr目录用来存放用户的应用程序。usr目录的全称是Unix System Resources(Unix 系统资源),通过usr这个目录我们看到了UNIX的影子,usr是Unix的核心存储目录,最早的 Unix 根目录 / 空间很小,只放启动必需的东西,所有用户程序、系统工具、库、文档都放在/usr目录下。后来 Unix/Linux 目录结构标准化后,官方更倾向于解释为:User System Resources(用户系统资源)。
可以把usr目录理解为Windows系统的Program Files目录,当你使用apt install、yum install 按装软件时,安装软件会默认把程序安装到usr目录。
usr有几个核心子目录,描述如下:
/usr/bin:存放普通用户使用的应用程序命令(区别于/bin的基础命令,此处多为第三方应用或系统扩展命令);
/usr/sbin:存放管理员使用的扩展系统命令;
/usr/lib和/usr/lib64:存放应用程序依赖的共享库;
/usr/share:存放共享资源,如软件的文档、图标、语言包等;
/usr/local:存放手动安装的应用程序(如源码编译安装的软件),默认情况下,手动安装的软件会被安装到/usr/local/bin(命令)、/usr/local/lib(库文件)等子目录下。
2.opt目录
Linux发行版官方提供的软件默认存储到系统/bin或/usr目录,用户自己编译安装的软件默认存储到/usr/local目录。如Orcal数据库、JetBrains IDEA、Clion、VSCode等软件,这些软件自带一堆自己的库、配置、插件,安装时不希望和系统混在一起,避免污染系统,方便管理,删的时候不会损坏系统。
因此opt目录主要用来存储第三方商业软件,便于对第三方商业软件进行管理。
六、本节总结
Linux 文件系统采用单根树形结构,核心遵循一切皆文件的设计理念, ——无论是硬件设备、目录、普通文件,都以文件的形式呈现和管理。
整个系统仅有唯一一棵目录树,所有存储设备、文件、目录均从根目录 / 开始,向下层级延伸、分支扩展,不存在 Windows 下 C、D、E 盘的多根概念。
根目录 / 下的二级目录按功能可划分为五大类:
系统核心目录:存放系统启动、运行必需的二进制程序、配置与库文件;
用户相关目录:存放普通用户数据、家目录与用户配置;
存储与挂载目录:用于挂载磁盘、U 盘、移动存储等外部设备;
应用与资源目录:存放第三方软件、共享库、文档、帮助手册等;
设备与虚拟目录:映射硬件设备、进程信息、内存等系统虚拟资源。