在Linux中,“文件系统”有两层紧密关联的含义:一是指目录结构的组织方式(如根目录/、/home),二是指管理硬盘数据的技术规范(如ext4、XFS)。
1. Linux文件系统层次结构 (FHS)
Linux遵循文件系统层次标准 (Filesystem Hierarchy Standard),所有文件和目录都从根目录 / 开始,形成一棵树。
核心目录及功能
2. 物理文件系统类型
这是指数据在磁盘上的组织方式。Linux支持多种类型,各有特点。
日志文件系统 (带写入保护)
服务器和桌面主流选择,断电恢复快。
ext4:最经典通用,稳定可靠,最大支持1 Exabyte卷。
XFS:高性能,尤其擅长大文件读写,CentOS/RHEL 7+默认,不支持缩容。
Btrfs:新一代写时复制系统,支持快照、压缩、子卷,功能堪比ZFS。
特殊用途
NTFS / exFAT / vfat:兼容Windows,vfat适用于U盘,exFAT支持大文件跨平台。
tmpfs:驻留内存,极速读写,用于 /tmp、/run。
ISO 9660 / UDF:光盘标准。
NFS / CIFS:网络文件系统,用来挂载远程共享。
ZFS:需额外安装,集成了卷管理,校验自修复、快照、压缩等高级功能。
3. 核心概念:挂载
所有存储设备都挂载到目录树的某一点才能访问,这就是“单一文件树”哲学。
bash# 查看已挂载的文件系统mount | column -t# 或df -hT# 手动挂载示例sudo mount /dev/sdb1 /mnt/data
系统启动时会读取 /etc/fstab 文件自动挂载。
4. 实战:创建与管理文件系统
bash# 1. 查看磁盘和分区lsblk -fsudo fdisk -l# 2. 格式化为ext4 (会清除数据!)sudo mkfs.ext4 /dev/sdb1# 3. 创建挂载点并挂载sudo mkdir -p /mnt/mydisksudo mount /dev/sdb1 /mnt/mydisk# 4. 设置开机自动挂载 (/etc/fstab 追加)echo "UUID=$(sudo blkid -s UUID -o value /dev/sdb1) /mnt/mydisk ext4 defaults 0 2" | sudo tee -a /etc/fstab
5. 查看文件系统信息
bash# 查看磁盘使用情况df -h# 查看目录或文件占用空间du -sh /home/user/# 查看已挂载文件系统类型lsblk -f# 检查/修复ext系列文件系统 (需先卸载)sudo fsck /dev/sdb1
6. 特殊虚拟文件系统
proc:系统“探测接口”,如 cat /proc/cpuinfo 看CPU信息。
sys:内核设备视图,如修改 /sys/class/backlight 调亮度。
dev:一切皆文件,/dev/null 丢弃数据,/dev/random 取随机数。
tmpfs:内存文件系统,常用于 /tmp。
Linux文件系统设计体现了“一切皆文件”的哲学——不仅是普通数据,连硬件设备、内核参数、进程信息都以文件形式呈现,这让系统管理变得统一且灵活。掌握以上内容,你就能深入理解数据存放、磁盘挂载及系统资源访问的本质。
二、Linux文件的通用操作方法
在Linux中,“一切皆文件”的哲学意味着无论是普通文本、设备、还是网络套接字,都可以用一套通用的方法进行操作。以下是Linux文件通用操作的核心方法。
1. 文件与目录的基本操作
这是日常使用频率最高的操作集合。
查看与浏览
bashls -la # 显示所有文件(含隐藏)及详细属性ls -lh # 人类可读的文件大小格式
pwd:显示当前工作目录的绝对路径。
cd:切换目录。
bashcd /home/user # 进入指定目录cd - # 返回上次所在目录
cat:一次性显示文件全部内容(适合小文件)。
less / more:分页浏览长文件,按 q 退出。
head / tail:查看文件的头部或尾部。
bashtail -n 20 file.log # 查看最后20行tail -f file.log # 实时追踪文件更新(查看日志利器)
创建与删除
touch:创建空文件,或更新文件的时间戳。
mkdir:创建目录
bashmkdir -p a/b/c # 递归创建多级目录
rm:删除文件或目录。
bashrm -i file # 删除前确认rm -rf dir # 强制递归删除(慎用,无回收站)
复制与移动
bashcp source.txt dest.txt # 复制文件cp -r source_dir/ dest_dir/ # 递归复制目录
mv:移动或重命名。
bashmv old_name.txt new_name.txt # 重命名mv file.txt /target/dir/ # 移动文件
链接(快捷方式)
ln:创建硬链接或符号链接(软链接)。
bashln -s /real/path/file soft_link # 符号链接(常用)ln /real/path/file hard_link # 硬链接(共享inode)
2. 文件内容处理(通用读写与过滤)
这是Linux的精华,通过管道 | 可组合出强大功能。
grep:强大的文本搜索工具。
bashgrep "error" file.log # 搜索包含error的行grep -r "keyword" /path/dir/ # 递归搜索目录ps aux | grep "nginx" # 与管道结合过滤进程
wc:统计字数、行数、字节数
bashwc -l file.txt # 统计行数
sort:对文件内容排序。
uniq:报告或移除重复行(常跟在 sort 后)。
cut:按列截取文本。
bashcut -d: -f1 /etc/passwd # 以:分隔,取第1列
awk 和 sed:高级文本处理语言和流编辑器,功能极为强大。
3. 权限与属性管理
多用户系统的安全基石,基于“所有者-属组-其他人”模型。
chmod:修改文件权限。
bashchmod u+x script.sh # 给所有者增加执行权限chmod 755 file # 数字模式:rwxr-xr-x
chown:变更文件所有者。
bashchown user:group file # 同时修改所有者和属组
chgrp:专门变更文件所属的用户组。
4. 文件查找与定位
find:基于文件名、类型、时间、大小等复杂条件精确查找。
bashfind / -name "*.log" -size +10M # 查找大于10MB的日志文件find . -type f -mtime -7 # 查找最近7天修改的文件
locate:依赖数据库快速搜索,速度远快于 find。
bashlocate filename_pattern
which / whereis:查找可执行程序或手册路径。
5. 文件归档与压缩
tar:将多个文件打包成一个。
bashtar -czvf archive.tar.gz /dir/ # 打包并gzip压缩tar -xzvf archive.tar.gz # 解压
6. 文件传输与同步
bashscp file.txt user@remote_host:/path/
rsync:增量同步神器,支持本地和远程,常用于备份。
bashrsync -avz /local/dir/ user@host:/remote/dir/
wget / curl:从网络下载文件或调用API。
bashwget https://example.com/file.iso
7. I/O重定向与管道
这构成了组合命令的胶水,让操作无比灵活。
bashecho "hello" > file.txt # 覆盖写入echo "world" >> file.txt # 追加写入
错误重定向:
bashcommand 2>&1 # 将错误输出合并到标准输出
管道:将前一个命令的标准输出作为后一个命令的标准输入。
bashcat /var/log/syslog | grep "error" | wc -l
8. 通用思想:一切皆是文件
在对普通文件、目录操作时,谨记这套操作逻辑对以下对象同样适用:
设备文件:如 echo "test" > /dev/sda 是直接写入硬盘(非常危险)。
进程信息:如 cat /proc/cpuinfo 查看CPU信息。
参数调整:如 echo 1 > /proc/sys/net/ipv4/ip_forward 开启内核路由转发。