当前位置:首页>Linux>第007讲 Linux编程高手,不愿透露2个核心技术

第007讲 Linux编程高手,不愿透露2个核心技术

  • 2026-10-11 06:01:40
第007讲 Linux编程高手,不愿透露2个核心技术

在Linux中,“文件系统”有两层紧密关联的含义:一是指目录结构的组织方式(如根目录/、/home),二是指管理硬盘数据的技术规范(如ext4、XFS)。

一、Linux下的文件系统

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. 文件与目录的基本操作

这是日常使用频率最高的操作集合。

查看与浏览

  • ls:列出目录内容

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       # 强制递归删除(慎用,无回收站)
  • rmdir:仅能删除空目录。

复制与移动

  • cp:复制。

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         # 解压
  • gzip / bzip2 / xz:单个文件的压缩工具,gzip file 会生成 file.gz。

  • zip / unzip:与Windows兼容的跨平台压缩格式。

6. 文件传输与同步

  • scp:两台Linux主机间安全拷贝。

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 开启内核路由转发。

最新文章

随机文章