Linux目录结构概述
Linux系统的目录结构遵循文件系统层次结构标准(FHS),这是一种定义Linux操作系统目录和目录内容的规范。
与Windows系统不同,Linux没有驱动器盘符的概念,所有文件和设备都组织在单一的根目录(/)下。
关键概念
- 根目录(/) - 文件系统的起点
- FHS标准 - 定义目录结构的规范
- 挂载点 - 其他文件系统连接到目录树的位置
- 绝对路径 - 从根目录开始的完整路径
- 相对路径 - 从当前目录开始的路径
Linux目录结构特点
- 层次化结构 - 从根目录开始的树形结构
- 标准化布局 - 遵循FHS标准
- 一切皆文件 - 设备、进程等都以文件形式存在
- 大小写敏感 - 文件名和目录名区分大小写
- 路径分隔符 - 使用正斜杠(
/)
示例:绝对路径和相对路径
绝对路径:/home/user/documents/file.txt
相对路径:如果当前目录是/home/user,则相对路径为documents/file.txt
文件系统层次结构标准(FHS)
FHS定义了Linux系统中主要目录的布局和内容,确保不同Linux发行版之间的一致性。
FHS的主要目标
- 使软件和用户预测已安装文件和目录的位置
- 使发行版、应用程序和系统管理员之间的协作更加容易
- 统一不同Linux系统之间的目录结构
FHS目录分类
- 静态目录 - 内容不会改变,如
/bin,/usr - 动态目录 - 内容会改变,如
/var,/home - 可共享目录 - 可以在不同主机间共享,如
/usr,/opt - 不可共享目录 - 特定于主机,如
/etc,/boot
FHS目录结构示意图
/ (根目录)
/bin
/boot
/dev
/etc
/home
/lib
/media
/mnt
/opt
/proc
/root
/run
/sbin
/srv
/tmp
/usr
/var
提示: FHS是一个不断发展的标准,不同版本的Linux发行版可能会有细微差异,但核心目录结构保持一致。
Linux目录树
/ (根目录)
├── bin (用户二进制文件)
├── boot (启动文件)
├── dev (设备文件)
├── etc (配置文件)
│ ├── network
│ ├── ssh
│ └── passwd
├── home (用户主目录)
│ ├── user1
│ └── user2
├── lib (库文件)
├── media (可移动媒体)
├── mnt (挂载点)
├── opt (可选软件)
├── proc (进程信息)
├── root (root用户主目录)
├── run (运行时数据)
├── sbin (系统二进制文件)
├── srv (服务数据)
├── sys (系统信息)
├── tmp (临时文件)
├── usr (用户程序)
│ ├── bin
│ ├── lib
│ ├── local
│ └── share
└── var (可变数据)
├── log
├── cache
└── spool
查看目录结构
可以使用tree命令查看目录结构:
# 安装tree命令 (如果尚未安装)
sudo apt install tree # Ubuntu/Debian
sudo yum install tree # CentOS/RHEL
# 查看根目录结构 (前两层)
tree -L 2 /
# 查看当前目录结构
tree
使用ls命令
使用ls命令查看目录内容:
# 查看根目录
ls /
# 查看详细信息
ls -l /
# 查看所有文件(包括隐藏文件)
ls -la ~
# 按文件大小排序
ls -lS
# 按修改时间排序
ls -lt
目录详解
根目录 (/)
文件系统的起点所有文件和目录的起点,其他所有目录都是根目录的子目录。
重要内容:
- 系统启动所需的文件和目录
- 设备文件(
/dev) - 系统配置文件(
/etc) - 用户主目录(
/home)
注意: 根目录通常应该单独分区,并且有足够的空间供系统运行。
/bin
基本用户二进制文件包含系统启动和运行所需的基本命令,所有用户都可以使用。
常见命令:
ls- 列出目录内容cp- 复制文件mv- 移动文件rm- 删除文件cat- 查看文件内容
示例: 在单用户模式下,只有
/bin和/sbin中的命令可用。
/dev
设备文件包含设备文件,这些文件代表系统中的硬件设备。
重要设备文件:
/dev/sda- 第一个SATA硬盘/dev/null- 空设备,写入的数据被丢弃/dev/zero- 零设备,提供无限的零字节/dev/tty- 当前终端/dev/random- 随机数生成器
提示: 在Linux中,一切皆文件,包括硬件设备。
/etc
配置文件包含系统和应用程序的配置文件,通常是文本文件。
重要配置文件:
/etc/passwd- 用户账户信息/etc/group- 用户组信息/etc/fstab- 文件系统表/etc/hosts- 主机名解析/etc/ssh/sshd_config- SSH服务器配置
注意: 修改
/etc中的文件需要管理员权限,错误的配置可能导致系统问题。
/home
用户主目录包含所有普通用户的主目录,每个用户有一个以其用户名命名的子目录。
用户目录内容:
~/Desktop- 桌面文件~/Documents- 文档~/Downloads- 下载文件~/.bashrc- Bash shell配置~/.ssh- SSH密钥和配置
提示:
~符号代表当前用户的主目录。
/root
root用户主目录超级用户(root)的主目录,不是/home的子目录。
特点:
- 只有root用户可以访问
- 包含root用户的个人文件和配置
- 通常用于存储系统管理脚本和工具
注意: 普通用户无法访问
/root目录,这是出于安全考虑。
/usr
用户程序和数据包含用户应用程序、库文件、文档等,是系统中最大的目录之一。
重要子目录:
/usr/bin- 用户命令/usr/lib- 库文件/usr/local- 本地安装的软件/usr/share- 架构无关的数据文件/usr/src- 源代码
提示: 大多数用户安装的应用程序都位于
/usr目录下。
/opt
可选应用程序用于安装第三方或可选应用程序,每个应用程序通常有自己的子目录。
常见内容:
- Google Chrome
- Oracle Java
- Adobe Reader
- 大型商业软件
示例: Google Chrome可能安装在
/opt/google/chrome目录中。
/var
可变数据包含经常变化的文件,如日志、缓存、假脱机文件等。
重要子目录:
/var/log- 系统日志/var/cache- 应用程序缓存/var/spool- 排队任务(打印、邮件等)/var/www- Web服务器文件/var/lib- 状态信息
提示:
/var目录通常应该单独分区,防止日志文件填满根分区。
/tmp
临时文件用于存储临时文件,所有用户都可以读写,但通常只能删除自己创建的文件。
特点:
- 系统重启时可能被清空
- 用于应用程序临时存储
- 用于进程间通信
示例: 文本编辑器可能在
/tmp中创建文件的临时副本。
/proc
进程信息虚拟文件系统,提供关于系统和进程的信息。
重要文件:
/proc/cpuinfo- CPU信息/proc/meminfo- 内存信息/proc/version- 内核版本/proc/[pid]- 特定进程的信息
提示:
/proc中的文件不是真正的磁盘文件,而是在访问时动态生成的。
/mnt 和 /media
挂载点用于临时挂载文件系统。
区别:
/media- 用于可移动媒体(USB、CD-ROM)/mnt- 用于临时挂载其他文件系统
示例:
# 挂载USB驱动器
sudo mount /dev/sdb1 /media/usb
# 挂载网络共享
sudo mount -t nfs 192.168.1.100:/share /mnt/nfs
相关命令
导航和查看命令
| 命令 | 说明 | 示例 |
|---|---|---|
pwd |
显示当前工作目录 | pwd |
cd |
更改目录 | cd /home/user |
ls |
列出目录内容 | ls -la |
tree |
以树状图列出目录 | tree -L 2 |
find |
查找文件 | find / -name "*.conf" |
目录操作命令
| 命令 | 说明 | 示例 |
|---|---|---|
mkdir |
创建目录 | mkdir newdir |
rmdir |
删除空目录 | rmdir emptydir |
rm -r |
递归删除目录 | rm -r olddir |
cp -r |
递归复制目录 | cp -r dir1 dir2 |
mv |
移动/重命名目录 | mv oldname newname |
实用命令示例
查看磁盘使用情况
# 查看各目录磁盘使用情况
du -h --max-depth=1 /
# 以易读格式显示磁盘空间
df -h
# 查看当前目录大小
du -sh
查找特定文件
# 查找所有.conf文件
find /etc -name "*.conf"
# 查找大于100MB的文件
find / -size +100M
# 查找最近修改的文件
find /home -mtime -7