在 Linux 中,一切皆文件(Everything is a file)——
无论是普通文本、程序、目录,还是键盘、打印机、硬盘等硬件设备,都被抽象为“文件”。
关键区别:
Windows 使用多个根(如
C:\、D:\)Linux 只有一个根目录
/,所有内容都挂载在这个统一的树状结构下
这种设计源于 UNIX,并被所有类 UNIX 系统(如 BSD、macOS)继承。
Filesystem Hierarchy Standard
Linux 目录布局严格遵循 FHS(文件系统层次标准),该标准定义了:
每个顶级目录的用途
应存放哪些类型的文件
系统管理员和开发者应如何组织数据
这确保了不同发行版(Ubuntu、CentOS、Debian 等)之间的一致性。

设备文件分为两类:
块设备(Block):如硬盘(
/dev/sda),以块为单位读写字符设备(Character):如键盘(
/dev/input/event0),逐字符传输
/ 下的核心目录详解
以下是 Linux 根目录下的顶级目录及其作用:
记忆技巧:
/bin+/sbin→ 命令
/etc→ 配置
/var→ 变化的数据(日志、缓存)
/usr→ 用户程序(静态数据)
/dev+/proc+/sys→ 系统与硬件接口
安全提示:修改
/etc下的文件前务必备份!错误配置可能导致系统无法启动。
/usr 目录结构用户程序核心区
注意:
/usr/bin/X11通常是/usr/bin的符号链接,已逐渐弃用。
/proc 与 /sys这两个目录不占用磁盘空间,由内核动态生成:
/proc —— 进程与系统信息cat /proc/cpuinfo # CPU 详细信息
cat /proc/meminfo # 内存使用情况
cat /proc/mounts # 当前挂载的文件系统
ls /proc/1234 # 查看 PID=1234 的进程信息/sys —— 设备与驱动控制提供对硬件设备、总线、驱动的统一视图
可通过写入文件来动态修改内核参数(如调节 CPU 频率)
/var/log)查看日志技巧:
tail -f /var/log/syslog # 实时跟踪日志 journalctl -u nginx # systemd 服务日志(现代系统)
sudo -s
# 输入当前用户密码cd /
ls -l你将看到类似以下输出:
drwxr-xr-x 2 root root 4096 Oct 25 10:00 bin
drwxr-xr-x 4 root root 1024 Oct 25 09:30 boot
drwxr-xr-x 20 root root 3860 Oct 25 10:05 dev
drwxr-xr-x 137 root root 12288 Oct 25 10:02 etc
...警告:不要随意删除
/下的目录!可能导致系统崩溃。
内核文件:/boot/vmlinuz-*(压缩的 Linux 内核)
版本信息:
cat /proc/version # 内核版本
cat /etc/os-release # 发行版信息(推荐)
uname -a # 系统与内核详情/
├── bin/ ← 基础命令
├── boot/ ← 启动文件
├── dev/ ← 设备文件
├── etc/ ← 配置文件
├── home/ ← 普通用户家目录
├── lib/ ← 系统库
├── media/ ← 自动挂载的移动设备
├── mnt/ ← 手动挂载点
├── opt/ ← 第三方软件
├── proc/ ← 进程虚拟文件系统
├── root/ ← root 用户家目录
├── run/ ← 运行时数据
├── sbin/ ← 管理员命令
├── srv/ ← 服务数据
├── sys/ ← 设备与内核虚拟文件系统
├── tmp/ ← 临时文件
├── usr/ ← 用户程序(只读)
└── var/ ← 可变数据(日志、缓存等)核心思想:分而治之 —— 将不同性质的文件分类存放,使系统更清晰、稳定、易维护。
为什么 Linux 要把设备也当作文件?这样做有什么好处?
/usr 和 /var 的设计哲学有何不同?为什么不能把日志放在 /usr/log?
如果你要安装一个从源码编译的软件(如 Nginx),应该放在哪个目录?为什么?