Linux的目录结构

Linux 的目录结构是理解 Linux 系统的核心基础,我会从设计原则、核心目录功能、新手易混点三个维度,用"通俗比喻+实战举例"的方式讲清楚,让你不仅知道"是什么",还知道"为什么这么设计""实际怎么用"。

一、Linux 目录结构的核心设计原则

首先要明确 Linux 目录的两个关键特性,这是和 Windows 最大的区别:

  1. 单根目录结构 :Linux 只有一个根目录 /(读作"根"),所有文件/目录都挂载在 / 下,没有 Windows 里的 C 盘、D 盘概念(Windows 是多根结构);
  2. FHS 标准:Linux 遵循《文件系统层次结构标准(Filesystem Hierarchy Standard)》,规定了各目录的用途,保证不同 Linux 发行版(CentOS、Ubuntu、Debian)的目录结构一致;
  3. 目录分类逻辑 :按"文件用途"分类,而非"文件类型"------比如配置文件全在 /etc,可执行命令全在 /bin//sbin,日志全在 /var/log
通俗比喻

把 Linux 系统比作一栋大楼:

  • /:大楼的"一楼大厅",是所有房间(目录)的入口;
  • 各子目录(/etc//var//usr 等):大楼的不同功能区(比如"配置室""数据室""软件室");
  • 文件:功能区里的具体文件(比如配置室里的"网络设置单"、数据室里的"日志本")。

二、核心目录详解(按重要性排序)

下面是 / 下最核心的目录,每个目录都标注"功能+通俗解释+实战举例",新手重点掌握前10个即可:

目录路径 英文全称 核心功能 通俗解释 实战举例
/ Root 所有目录的顶级父目录,整个文件系统的起点 大楼大厅 cd / 回到根目录;ls / 查看所有核心目录
/bin Binary 存放所有用户可执行的基础命令(如 ls、cd、cp、rm) 公共命令室(所有人都能用) ls /bin 能看到 ls cd 等命令;/bin/lsls 命令的实际路径
/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 盘/光盘。

四、实战小技巧(新手必学)

  1. 快速查看目录结构

    bash 复制代码
    # 以树形结构显示根目录下的一级目录(需先装 tree 工具:yum install tree -y)
    tree -L 1 /

    输出示例:

    复制代码
    /
    ├── bin -> usr/bin
    ├── etc
    ├── home
    ├── root
    ├── tmp
    ├── usr
    └── var

    注意:很多目录(如 /bin)是软链接到 /usr/bin,这是 Linux 系统的优化,无需在意。

  2. 判断目录是否为虚拟目录

    虚拟目录(/proc//sys)存储在内存中,不是磁盘文件,可用 df -h 查看:

    bash 复制代码
    df -h  # 只显示磁盘挂载的目录,/proc/ /sys/ 不会出现在列表中
  3. 核心目录权限原则

    • /etc//sbin//root:只有 root 可写,普通用户只读;
    • /home//tmp:普通用户可读写(/tmp 所有用户都能写);
    • /usr:root 可写,普通用户只读(安装软件需要 sudo)。

总结

  1. Linux 是单根目录结构 ,所有文件都在 / 下,遵循 FHS 标准,不同发行版目录结构一致;
  2. 核心目录按"用途"分类:/etc 存配置、/bin//sbin 存命令、/var 存动态数据、/usr 存软件、/home//root 存用户目录;
  3. 新手重点掌握 /etc//var//usr//home//tmp 这5个目录,能解决80%的日常操作问题。

记住:Linux 目录的设计逻辑是"让文件有固定位置",比如无论你用 CentOS 还是 Ubuntu,Docker 的配置永远在 /etc/docker,日志永远在 /var/log/docker,这也是 Linux 易管理的核心原因。

相关推荐
A-刘晨阳2 小时前
【探索实战】基于Kubernetes部署Kurator
运维·云原生·容器·kubernetes·kurator
梦仔生信进阶2 小时前
【Linux基础】Linux磁盘空间管理之批量删除文件
linux
MarkHD2 小时前
智能体在车联网中的应用:第6天 核心工具链与仿真世界:从零构建车联网开发环境——Linux Ubuntu与命令行精要指南
linux·运维·ubuntu
qq762118222 小时前
Linux mq_open打开失败
linux·运维·服务器
2401_858286112 小时前
纪念人生提交的第一个即将并入Linux内核的补丁
linux·运维·服务器
LSL666_2 小时前
1 验证码
java·服务器·前端·redis·验证码
tuokuac2 小时前
Linux中的cd ~命令
linux·运维·服务器
彬鸿科技2 小时前
【SDR课堂第42讲】RFSOC开发入门之开发环境搭建(三)
linux·运维·数据库·ubuntu·postgresql·软件无线电·软无
wniuniu_2 小时前
ceph中的crush map
java·运维·ceph