Linux 的目录结构是理解 Linux 系统的核心基础,我会从设计原则、核心目录功能、新手易混点三个维度,用"通俗比喻+实战举例"的方式讲清楚,让你不仅知道"是什么",还知道"为什么这么设计""实际怎么用"。
一、Linux 目录结构的核心设计原则
首先要明确 Linux 目录的两个关键特性,这是和 Windows 最大的区别:
- 单根目录结构 :Linux 只有一个根目录
/(读作"根"),所有文件/目录都挂载在/下,没有 Windows 里的 C 盘、D 盘概念(Windows 是多根结构); - FHS 标准:Linux 遵循《文件系统层次结构标准(Filesystem Hierarchy Standard)》,规定了各目录的用途,保证不同 Linux 发行版(CentOS、Ubuntu、Debian)的目录结构一致;
- 目录分类逻辑 :按"文件用途"分类,而非"文件类型"------比如配置文件全在
/etc,可执行命令全在/bin//sbin,日志全在/var/log。
通俗比喻
把 Linux 系统比作一栋大楼:
/:大楼的"一楼大厅",是所有房间(目录)的入口;- 各子目录(
/etc//var//usr等):大楼的不同功能区(比如"配置室""数据室""软件室"); - 文件:功能区里的具体文件(比如配置室里的"网络设置单"、数据室里的"日志本")。
二、核心目录详解(按重要性排序)
下面是 / 下最核心的目录,每个目录都标注"功能+通俗解释+实战举例",新手重点掌握前10个即可:
| 目录路径 | 英文全称 | 核心功能 | 通俗解释 | 实战举例 |
|---|---|---|---|---|
/ |
Root | 所有目录的顶级父目录,整个文件系统的起点 | 大楼大厅 | cd / 回到根目录;ls / 查看所有核心目录 |
/bin |
Binary | 存放所有用户可执行的基础命令(如 ls、cd、cp、rm) | 公共命令室(所有人都能用) | ls /bin 能看到 ls cd 等命令;/bin/ls 是 ls 命令的实际路径 |
/sbin |
System Binary | 存放管理员(root) 专用的系统命令(如 reboot、ifconfig、fdisk) | 管理员命令室(只有管理员能用) | reboot 实际是 /sbin/reboot;普通用户执行会提示"权限不足" |
/etc |
Etcetera(等等) | 存放系统/应用的配置文件(纯文本,可编辑) | 系统配置室 | /etc/passwd(用户账号)、/etc/docker(Docker 配置)、/etc/ssh(SSH 配置) |
/home |
Home | 普通用户的"家目录"(每个用户有独立子目录,如 /home/zhangsan) |
普通员工办公室 | cd ~ 直接回到当前用户的 /home 目录;/home/user1 是 user1 的专属目录 |
/root |
Root User Home | 管理员(root)的家目录(普通用户无权限访问) | 老板办公室 | cd /root 只有 root 能进入;/root/.bashrc 是 root 的个性化配置 |
/var |
Variable | 存放可变数据(日志、缓存、数据库、邮件)------数据会随系统运行动态变化 | 动态数据室 | /var/log/messages(系统日志)、/var/log/docker(Docker 日志)、/var/lib/mysql(MySQL 数据) |
/usr |
Unix Shared Resources | 存放用户安装的软件/程序 (系统预装+手动安装),相当于 Windows 的 Program Files |
软件安装室 | /usr/bin(用户安装的命令,如 docker)、/usr/lib(软件依赖库)、/usr/local(手动编译安装的软件) |
/tmp |
Temporary | 存放临时文件(所有用户可读写),系统重启后会清空 | 临时文件回收站 | 程序运行时生成的临时文件;/tmp/test.txt 重启后会消失 |
/dev |
Device | 存放硬件设备文件(Linux 中"一切皆文件",硬件也以文件形式表示) | 硬件设备室 | /dev/sda(第一块硬盘)、/dev/null(空设备,相当于"回收站")、/dev/tty(终端) |
/proc |
Process | 存放进程/系统状态的虚拟文件(内存中生成,非磁盘文件) | 系统状态监控室 | /proc/cpuinfo(CPU 信息)、/proc/meminfo(内存信息)、/proc/1(PID=1 的进程信息) |
/mnt |
Mount | 临时挂载外部存储设备(如 U 盘、移动硬盘、NFS 共享目录) | 临时挂载点 | mount /dev/sdb1 /mnt/usb 把 U 盘挂载到 /mnt/usb |
/media |
Media | 自动挂载可移动设备(如光盘、U盘),比 /mnt 更"自动化" |
自动挂载点 | 插入 U 盘后,系统可能自动挂载到 /media/usb |
/opt |
Optional | 存放大型独立软件(如 Oracle、Tomcat)------软件所有文件都在该目录下 | 大型软件专属室 | /opt/tomcat(Tomcat 完整安装目录)、/opt/mysql(MySQL 独立安装) |
/lib |
Library | 存放系统/命令的依赖库文件(32位系统),64位系统是 /lib64 |
系统库文件室 | /lib64/libc.so.6(C 语言核心库)、/lib/systemd(系统启动服务库) |
/sys |
System | 存放内核相关的系统信息 (硬件参数、内核配置),和 /proc 类似但更聚焦硬件 |
内核硬件信息室 | /sys/class/net/eth0(网卡 eth0 信息)、/sys/fs/cgroup(容器资源限制) |
三、新手易混目录对比(避坑重点)
很多新手会混淆相似目录,这里专门对比:
1. /bin vs /sbin vs /usr/bin vs /usr/sbin
/bin:系统核心命令(所有用户可用,如 ls、cd),开机时就会加载;/sbin:系统管理命令(仅 root 可用,如 reboot、fdisk);/usr/bin:用户安装的软件命令(如 docker、python),非系统核心;/usr/sbin:用户安装的管理命令(如 docker daemon、httpd)。
2. /usr vs /usr/local vs /opt
/usr:系统预装软件(yum/apt 安装的),比如yum install docker会装到/usr/bin/docker;/usr/local:手动编译安装的软件(make && make install),比如编译安装 Nginx 会到/usr/local/nginx;/opt:独立完整的软件包,比如解压 Tomcat 压缩包到/opt/tomcat,所有文件都在该目录下。
3. /var vs /tmp
/var:长期存储的可变数据(日志、数据库),不会自动清空;/tmp:临时文件,系统重启/定期清理,不能存重要数据。
4. /mnt vs /media
/mnt:手动挂载(需要执行mount命令),适合临时挂载服务器共享目录;/media:自动挂载(系统识别设备后自动挂载),适合桌面版 Linux 的 U 盘/光盘。
四、实战小技巧(新手必学)
-
快速查看目录结构:
bash# 以树形结构显示根目录下的一级目录(需先装 tree 工具:yum install tree -y) tree -L 1 /输出示例:
/ ├── bin -> usr/bin ├── etc ├── home ├── root ├── tmp ├── usr └── var注意:很多目录(如
/bin)是软链接到/usr/bin,这是 Linux 系统的优化,无需在意。 -
判断目录是否为虚拟目录 :
虚拟目录(
/proc//sys)存储在内存中,不是磁盘文件,可用df -h查看:bashdf -h # 只显示磁盘挂载的目录,/proc/ /sys/ 不会出现在列表中 -
核心目录权限原则:
/etc//sbin//root:只有 root 可写,普通用户只读;/home//tmp:普通用户可读写(/tmp所有用户都能写);/usr:root 可写,普通用户只读(安装软件需要 sudo)。
总结
- Linux 是单根目录结构 ,所有文件都在
/下,遵循 FHS 标准,不同发行版目录结构一致; - 核心目录按"用途"分类:
/etc存配置、/bin//sbin存命令、/var存动态数据、/usr存软件、/home//root存用户目录; - 新手重点掌握
/etc//var//usr//home//tmp这5个目录,能解决80%的日常操作问题。
记住:Linux 目录的设计逻辑是"让文件有固定位置",比如无论你用 CentOS 还是 Ubuntu,Docker 的配置永远在 /etc/docker,日志永远在 /var/log/docker,这也是 Linux 易管理的核心原因。