← 返回 Linux 从零到实战 目录
文件与目录的 CRUD 操作 封面
🖼️ 本章封面 · 由 NVIDIA AI 生成

🐧 Linux 从零到实战 · 第1阶段 · 第1.2章:文件与目录的 CRUD 操作

在本章中,我们将学习 Linux 文件系统最核心的操作:CRUD(Create 创建, Read 读取, Update 更新, Delete 删除)。同时,我们将揭开 Linux 文件系统的底层秘密 —— inode,并以此理解极易混淆的“硬链接”与“软链接”。

文件与目录的 CRUD 操作 概念图
🎨 核心概念可视化 · AI 生成
🎯 本节目标


💡 核心概念

1. 什么是 CRUD?

在计算机领域,CRUD 代表了对数据最基本的操作。在 Linux 文件系统中,它对应如下: - Create (创建):创建新文件或新目录。 - Read (读取):查看文件内容或列出目录(本章重点在操纵,读取将在 1.3 章详解)。 - Update (更新):包括修改文件内容、重命名文件或移动文件位置。 - Delete (删除):移除文件或目录。

CRUD 四操作总览:Create 创建 / Read 读取 / Update 更新 / Delete 删除,分别对应新建、查看、编辑、删除 图:文件系统的四大基础操作 CRUD,是本章所有命令的主线。

2. 深度解析:inode (索引节点)

要理解 Linux 的链接机制,必须先理解 inode

想象一个图书馆: - 文件内容:书页上的文字(存储在磁盘的 Data Block 中)。 - inode:图书索引卡。卡片上记录了这本书在哪个书架、哪一层、谁能看、什么时候写的,但不记录书名。 - 文件名:书脊上的标签。标签指向索引卡(inode)。

在 Linux 中,文件名 $\rightarrow$ inode $\rightarrow$ 实际数据。 当你执行 ls -i 时,可以看到文件左侧的数字,那就是该文件的 inode 号

inode 图书馆类比:文件名(书脊标签)→ inode(索引卡)→ Data Block(书页数据),三级指针链路 图:文件名只是指向 inode 的“标签”,inode 才真正记录数据位置。

3. 硬链接 vs 软链接

特性 硬链接 (Hard Link) 软链接 (Symbolic Link)
本质 另一个指向同一 inode 的文件名 一个独立文件,内容是原文件的路径
inode 号 与原文件完全相同 拥有独立的 inode 号
删除原文件 文件依然存在,只要还有一个硬链接 链接失效,变为“死链” (Broken Link)
跨分区 不支持(不能跨文件系统) 支持
目录链接 不允许为目录创建硬链接 允许
类比 给同一个人起两个名字 Windows 的“快捷方式”

硬链接 vs 软链接对比:硬链接两标签共用同一 inode、删一仍存活;软链接指向路径、目标消失即成死链 图:硬链接共享 inode,软链接只记录路径——这是两者最本质的区别。


🛠️ 命令与操作

1. 创建 (Create)

创建文件:touch

touch 最常用的功能是创建空文件。

touch file1.txt              # 创建单个空文件
touch file{1..3}.txt         # 快速创建 file1.txt, file2.txt, file3.txt

创建目录:mkdir

mkdir my_folder              # 创建文件夹
mkdir -p a/b/c               # 【重点】递归创建:如果父目录不存在,自动创建所有层级

Create 操作:touch 生成空文件、mkdir -p 递归搭建多级目录树 图:touch 建文件、mkdir -p 一键递归建目录。

2. 更新与移动 (Update/Move)

复制:cp (Copy)

cp file1.txt file1_bak.txt    # 复制文件
cp -r folder1 folder2         # 【重点】递归复制:复制整个目录及其内容

移动/重命名:mv (Move)

在 Linux 中,移动文件和重命名文件使用的是同一个命令。

mv old_name.txt new_name.txt  # 重命名
mv file1.txt /tmp/            # 移动到 /tmp 目录

Update/Move 操作:cp 复制出副本、mv 移动文件或就地重命名 图:cp 生成副本,mv 在文件夹间移动或原地改名。

3. 删除 (Delete)

删除文件/目录:rm (Remove)

⚠️ 警告:Linux 默认没有“回收站”,rm 删除后极难找回!

rm file1.txt                  # 删除单个文件
rm -r my_folder               # 递归删除目录及其所有内容
rm -rf /path/to/dir           # 强制递归删除 (Recursive & Force)

Delete 警告:rm 直接销毁且无回收站,rm -rf 强制递归删除极其危险 图:rm 删除不可逆,rm -rf 更是高危命令,执行前务必确认路径。

避坑: 永远不要在不确定的情况下执行 rm -rf /rm -rf *。建议在执行前先用 ls 确认当前路径。

创建硬链接:ln

ln original.txt hardlink.txt  # 创建硬链接
ls -i                         # 观察发现两者 inode 号一致

创建软链接:ln -s

ln -s /absolute/path/orig.txt softlink.txt  # 创建软链接

💡 提示: 创建软链接时,建议目标文件使用 绝对路径,否则当你移动软链接文件后,它会因为找不到相对路径而失效。


📋 速查表

操作 命令 常用参数 说明
创建文件 touch - 创建空文件
创建目录 mkdir -p 递归创建多级目录
复制 cp -r 递归复制目录
移动/重命名 mv - 移动或改名
删除 rm -rf 强制递归删除 (极危险)
硬链接 ln - 指向同一 inode
软链接 ln -s - 创建路径快捷方式

🚧 避坑指南

  1. rm -rf 的恐惧:在执行 rm -rf 之前,养成习惯先输入 pwd 确认当前位置,或者先用 ls 检查要删除的文件列表。
  2. 软链接断链:如果你创建了 ln -s fileA linkA,随后执行 mv fileA fileB,那么 linkA 将失效。
  3. 硬链接跨区:尝试将 /home 分区的文件硬链接到 /boot 分区会报错,因为 inode 是文件系统内部的唯一标识,不能跨越不同的分区。

📝 课后练习

  1. 目录树构建:在当前目录下创建 study/linux/lesson1 这样的三级目录结构。
  2. 链接实验
  3. 创建一个文件 test.txt
  4. 为其创建硬链接 hard_test 和软链接 soft_test
  5. 使用 ls -i 查看三个文件的 inode 号。
  6. 删除 test.txt,尝试读取 hard_testsoft_test 的内容,观察谁失效了。
  7. 批量操作:使用 touch 一次性创建 10 个名为 tmp1.logtmp10.log 的文件,然后用 rm 一次性删除它们。

📚 参考

发布于 2026-07-14 11:12 · 由 Hermes Agent 自动生成