Linux(CentOS)系统管理入门笔记(第四期)——文件系统(下篇):文件与目录操作实战——cpmvmkdirrmln

Linux(CentOS)系统管理入门笔记(第四期)------文件系统(下篇):文件与目录操作实战------cp/mv/mkdir/rm/ln

知识衔接:

Linux(CentOS)系统管理入门笔记(第三期)------文件系统(上篇):目录结构与路径导航------FHS 与 cdpwdls

Linux系统管理入门系列其他文章欢迎访问:Linux入门------系统管理1

我的主页:AOwhisky,这里有更多运维系统性知识整理和其他有趣内容,欢迎与我一起探讨学习~
写在前面:大家好,我是北冰洋whisky,从昨天开始,我正式启动了对以前一阶段笔记的"翻新"计划。一路学习到三阶段,经历了不少的坎坷,离步入工作的时间节点越来越近的同时,我倍感基本功扎实的重要性。因此,除了知识点笔记整理的这条主线,我也主动开辟了知识点自测的支线计划。希望在后面的日子里,也能与各位共同进步!

引言:文件操作,Linux 世界里的"整理术"

上期我们拿到了 Linux 的"城市地图"(FHS),学会了"导航"(cd/pwd/ls)。但你到了目的地之后,总得干点什么------也许是要把一份文件"复印"一份放到别处(复制),也许是"搬家"(移动),也许是要"建个新仓库"(创建目录),或者"扔掉不要的旧东西"(删除)。

这些听起来简单,但 Linux 的文件操作有着自己的一套规则和"坑":cp 复制目录要加 -r,否则报错;rm 删除后几乎是不可恢复的;mv 既能移动又能重命名,一念之间功能切换;软链接和硬链接看似相似,本质却截然不同。

此外,当你要操作 100 个文件时,一个"通配符"能顶 100 次敲键盘------这是命令行效率的真正体现。

本期,我们全面掌握文件与目录的增、删、改、查、移、链 六大操作,并学会用 Shell 扩展匹配(通配符) 实现批量处理。读完这一期,你将具备在 Linux 文件系统中自如"整理家务" 的能力。
--- Compiled and Authored by Whisky --- July 7 th, 2026

目录

  1. 创建目录:mkdir
  2. 复制文件与目录:cp
  3. 移动与重命名:mv
  4. 删除文件与目录:rm 与 rmdir
  5. 软链接与硬链接:ln
  6. Shell 扩展匹配:通配符的艺术
  7. 总结与速查手册

1. 创建目录:mkdir

mkdir(Make Directory)是创建目录的唯一命令。它看似简单,但有几个关键用法必须掌握。

1.1 基础用法

bash 复制代码
# 在当前目录下创建一个目录
[whisky@centos7 ~]$ mkdir lab
[whisky@centos7 ~]$ ls -ld lab
drwxrwxr-x. 2 whisky whisky 6 7月  7 15:30 lab

# 同时创建多个目录
[whisky@centos7 ~]$ mkdir dir1 dir2 dir3
[whisky@centos7 ~]$ ls -d dir*
dir1  dir2  dir3

1.2 级联创建:-p 选项(最常用)

如果父目录不存在,mkdir 会报错:

bash 复制代码
[whisky@centos7 ~]$ mkdir dir1/dir2/dir3/dir4
mkdir: 无法创建目录"dir1/dir2/dir3/dir4": 没有那个文件或目录

使用 -p 选项可以一次性创建整个路径上的所有缺失目录:

bash 复制代码
[whisky@centos7 ~]$ mkdir -p dir1/dir2/dir3/dir4
[whisky@centos7 ~]$ tree dir1
dir1
└── dir2
    └── dir3
        └── dir4

3 directories, 0 files

💡 生产环境最佳实践 :在脚本中创建目录时,始终使用 mkdir -p 。即使目录已存在,-p 也不会报错(幂等操作),这比先用 test -d 判断再创建要简洁得多。

1.3 设置权限:-m 选项

默认情况下,mkdir 创建目录的权限受 umask 影响(详见后续章节)。如需在创建时指定权限,使用 -m

bash 复制代码
# 创建一个权限为 700(仅属主可读写执行)的目录
[whisky@centos7 ~]$ mkdir -m 700 private_dir
[whisky@centos7 ~]$ ls -ld private_dir
drwx------. 2 whisky whisky 6 7月  7 15:35 private_dir

1.4 mkdir 选项速查

选项 作用 示例
-p 级联创建父目录 mkdir -p /a/b/c/d
-m 创建时指定权限(八进制) mkdir -m 755 public
-v 显示创建过程(verbose) mkdir -v newdir

2. 复制文件与目录:cp

cp(Copy)用于复制文件或目录。Linux 的 cp 有许多细节值得注意。

2.1 复制文件

bash 复制代码
# 准备实验环境
[whisky@centos7 ~]$ cd lab
[whisky@centos7 lab]$ pwd
/home/whisky/lab

# 复制单个文件到当前目录(. 表示当前目录)
[whisky@centos7 lab]$ cp /etc/hosts .
[whisky@centos7 lab]$ ls
hosts

# 复制并重命名
[whisky@centos7 lab]$ cp /etc/hosts ./hosts.bak
[whisky@centos7 lab]$ ls
hosts  hosts.bak

# 复制多个文件,目标必须是已存在的目录
[whisky@centos7 lab]$ cp /etc/passwd /etc/host.conf .
[whisky@centos7 lab]$ ls
host.conf  hosts  hosts.bak  passwd

2.2 复制目录:-r-R 选项

复制目录必须使用递归选项,否则会报错:

bash 复制代码
# 错误方式(不加 -r)
[whisky@centos7 lab]$ cp /etc/yum .
cp: 略过目录"/etc/yum"

# 正确方式
[whisky@centos7 lab]$ cp -r /etc/yum .
[whisky@centos7 lab]$ ls
host.conf  hosts  hosts.bak  passwd  yum

2.3 复制目录时的"覆盖行为"陷阱

当目标目录已存在 时,cp -r 的行为与直觉相反:

bash 复制代码
# 当前 yum 目录已存在
[whisky@centos7 lab]$ ls yum
fssnap.d  pluginconf.d  protected.d  vars  version-groups.conf

# 再次复制 /etc/yum 到 ./yum(目标目录已存在)
[whisky@centos7 lab]$ cp -r /etc/yum ./yum

# 结果:源目录被复制到了 ./yum/yum 下面!
[whisky@centos7 lab]$ ls yum
fssnap.d  pluginconf.d  protected.d  vars  version-groups.conf  yum
[whisky@centos7 lab]$ ls yum/yum/
fssnap.d  pluginconf.d  protected.d  vars  version-groups.conf

⚠️ 常见误区 :很多新手以为"cp -r /etc/yum ./yum 会覆盖当前 yum 目录的内容"。实际上不会 ------如果目标目录已存在,cp 会把源目录作为子目录 复制进去,而不是覆盖。要合并覆盖,需要额外的技巧(如 rsync -a)。

2.4 常用选项

bash 复制代码
# -i:覆盖前询问(安全第一)
[whisky@centos7 lab]$ cp -i /etc/hosts ./hosts
cp:是否覆盖"./hosts"? y

# -f:强制覆盖(不询问)
cp -f /etc/hosts ./hosts

# -p:保留原文件的权限、时间戳等属性
cp -p /etc/hosts ./hosts-p

# -a:归档模式(等于 -dpR),保留所有属性并递归复制目录
# 常用于备份
cp -a /etc/yum ./yum-backup

# -u:仅当源文件比目标文件新时才复制(增量复制)
cp -u /etc/hosts ./hosts

# -v:显示复制过程
cp -v /etc/hosts .
'/etc/hosts' -> './hosts'

2.5 cp 选项速查表

选项 作用 使用场景
-r / -R 递归复制目录 必加(复制目录时)
-i 覆盖前交互确认 日常操作,防止误覆盖
-f 强制覆盖,不询问 脚本中确定要覆盖
-p 保留属性(权限、时间戳) 备份时保持原样
-a 归档模式(=-dpR 完整备份目录
-u 增量复制(源更新才复制) 同步更新文件
-v 显示复制过程 调试或确认操作

2.6 复制文件的标准操作流程

bash 复制代码
# 安全模式:先确认目标是否存在,用 -i 保护
cp -i source.txt /target/path/

# 批量备份模式:保留所有属性
cp -ap /etc/important/ /backup/important/

3. 移动与重命名:mv

mv(Move)有两个功能:

  1. 移动文件/目录到另一个位置
  2. 重命名文件/目录(当目标在同一目录时)

3.1 移动文件

bash 复制代码
# 准备实验环境:创建目标目录
[whisky@centos7 lab]$ mkdir ../backup

# 移动单个文件到另一个目录
[whisky@centos7 lab]$ mv hosts.bak ../backup/
[whisky@centos7 lab]$ ls ../backup/
hosts.bak

# 移动多个文件,目标必须是已存在的目录
[whisky@centos7 lab]$ mv passwd host.conf ../backup/
[whisky@centos7 lab]$ ls
hosts  yum
[whisky@centos7 lab]$ ls ../backup/
host.conf  hosts.bak  passwd

3.2 重命名(同一目录下移动)

bash 复制代码
# 重命名文件
[whisky@centos7 lab]$ ls
hosts  yum
[whisky@centos7 lab]$ mv hosts hosts.original
[whisky@centos7 lab]$ ls
hosts.original  yum

# 重命名目录
[whisky@centos7 lab]$ mv yum yum-backup
[whisky@centos7 lab]$ ls
hosts.original  yum-backup

3.3 移动目录

bash 复制代码
# 移动单个目录到另一个位置
[whisky@centos7 lab]$ mv yum-backup ../backup/
[whisky@centos7 lab]$ ls ../backup/
host.conf  hosts.bak  passwd  yum-backup

# 如果目标目录已存在,mv 的行为与 cp 类似:将源目录作为子目录移入
[whisky@centos7 lab]$ mkdir ../backup/subdir
[whisky@centos7 lab]$ mv ../backup/yum-backup ../backup/subdir/
[whisky@centos7 lab]$ ls ../backup/subdir/
yum-backup

3.4 mv 与 cp 的关键区别

操作 cp(复制) mv(移动)
源文件是否存在 保留 消失(被移走)
磁盘空间 占用双份 不额外占用(只是改变目录项)
跨文件系统 必须读写数据 先复制再删除原文件
速度 慢(取决于数据量) 快(同一文件系统内只是改指针)

💡 最佳实践 :在同一磁盘分区内,mv 几乎是瞬间完成的(不移动实际数据,只修改目录项)。而 cp 要实际读写数据,慢得多。因此,只在"需要保留原件"时用 cp,其他情况优先用 mv

3.5 mv 选项速查

选项 作用
-i 覆盖前询问确认
-f 强制覆盖,不询问
-u 仅当源文件比目标文件新时移动(增量)
-v 显示移动过程

4. 删除文件与目录:rm 与 rmdir

删除操作在 Linux 中是不可逆的(没有 Windows 的"回收站")。务必谨慎。

4.1 rmdir ------ 只能删除空目录

bash 复制代码
# 删除空目录
[whisky@centos7 lab]$ mkdir empty_dir
[whisky@centos7 lab]$ rmdir empty_dir

# 尝试删除非空目录会失败
[whisky@centos7 lab]$ rmdir ../backup
rmdir: 删除 "../backup" 失败: 目录非空

rmdir 只对空目录有效,实用性有限。

4.2 rm ------ 通用删除工具

bash 复制代码
# 删除文件
[whisky@centos7 lab]$ rm hosts.original
# 默认会询问(如果文件有写保护)
rm:是否删除有写保护的普通文件 "hosts.original"?y

# 删除多个文件
[whisky@centos7 lab]$ rm file1 file2 file3

# 强制删除(不询问)
rm -f hosts.original

4.3 删除目录:-r 选项

bash 复制代码
# 递归删除目录及其所有内容
[whisky@centos7 lab]$ rm -r ../backup/yum-backup

# 强制递归删除(最常见用法)
[whisky@centos7 lab]$ rm -rf ../backup

4.4 ⚠️ rm -rf ------ 双刃剑

rm -rf 是 Linux 中最危险也最常用的组合:

组合 含义 风险等级
rm file 删除文件(有确认提示)
rm -f file 强制删除文件(不确认)
rm -r dir 递归删除目录
rm -rf dir 强制递归删除(不确认) 极高

⚠️ 经典灾难rm -rf /rm -rf /* 会删除整个系统。另一个常见的危险操作是 rm -rf $VAR/,如果 $VAR 变量为空,实际执行的是 rm -rf /

安全操作规范:

  1. 删除前先用 ls 确认要删除的内容
  2. 使用相对路径而非绝对路径(降低误删风险)
  3. 重要文件删除前先用 mv 移到 /tmp 暂存,确认无误再删
  4. 脚本中用 rm -rf 前,先检查变量是否为空
bash 复制代码
# 安全删除示例:先确认路径
[whisky@centos7 lab]$ echo "要删除的目录是: $DIR"
要删除的目录是: /home/whisky/temp
[whisky@centos7 lab]$ rm -rf "$DIR"

4.5 rm 与 rmdir 对比

命令 适用对象 是否可删除非空内容
rmdir 目录 ❌ 必须为空
rm 文件 N/A
rm -r 目录 ✅ 递归删除所有内容

5. 软链接与硬链接:ln

链接(link)是 Linux 文件系统中非常独特的概念。软链接(符号链接) 像 Windows 的"快捷方式",而硬链接则是一个文件有多个"名字"。

5.1 软链接(符号链接)

软链接是一个独立的文件,其内容指向另一个文件的路径。

bash 复制代码
# 创建软链接:ln -s 目标 链接名
[whisky@centos7 lab]$ ln -s /var/tmp/ mytmp
[whisky@centos7 lab]$ ls -l mytmp
lrwxrwxrwx. 1 whisky whisky 9 7月  7 16:00 mytmp -> /var/tmp/

# 通过软链接访问目标目录
[whisky@centos7 lab]$ ls mytmp/
abrt  systemd-private-xxx  ...

# 在软链接目录中创建文件,实际存储在目标目录
[whisky@centos7 lab]$ touch mytmp/testfile
[whisky@centos7 lab]$ ls /var/tmp/testfile
/var/tmp/testfile
软链接的特性
特性 说明
文件类型 独立文件,l 开头
大小 存储的是目标路径的字符数
权限 权限始终为 lrwxrwxrwx,实际权限取决于目标文件
跨文件系统 ✅ 可以
链接目录 ✅ 可以
目标删除后 链接失效("断链",显示红色闪烁)
相对路径 可以用相对路径,但建议用绝对路径

💡 最佳实践 :创建软链接时,目标路径尽量使用绝对路径,否则一旦链接文件被移动,相对路径的目标可能找不到了。

bash 复制代码
# ❌ 不推荐(相对路径)
ln -s ../var/tmp/ mytmp

# ✅ 推荐(绝对路径)
ln -s /var/tmp/ mytmp
错误示范:相对路径的陷阱
bash 复制代码
[whisky@centos7 lab]$ ln -s . tmp1
[whisky@centos7 lab]$ ls -l tmp1
lrwxrwxrwx. 1 whisky whisky 1 7月  7 16:05 tmp1 -> .
# 此时 tmp1 指向当前目录,ls tmp1 看到的是当前目录的内容

# 但如果把 tmp1 移动到其他地方,它就指向"移动后的目标位置"
# 所以软链接务必谨慎使用相对路径

5.2 硬链接

硬链接不是独立文件,而是同一文件的另一个目录项(文件名)。 多个硬链接指向同一个 inode(数据块)。

bash 复制代码
# 准备文件
[whisky@centos7 lab]$ cp /etc/hosts ./hosts-1

# 创建硬链接
[whisky@centos7 lab]$ ln hosts-1 hosts-2

# 查看:两个文件大小、权限完全相同,且硬链接数从 1 变为 2
[whisky@centos7 lab]$ ls -l hosts-1 hosts-2
-rw-r--r--. 2 whisky whisky 158 7月  7 16:10 hosts-1
-rw-r--r--. 2 whisky whisky 158 7月  7 16:10 hosts-2

# 查看 inode 号(相同的 inode 说明指向同一数据)
[whisky@centos7 lab]$ ls -i hosts-1 hosts-2
33554556 hosts-1
33554556 hosts-2
验证:修改一个,另一个同步变化
bash 复制代码
# 修改 hosts-1 内容
[whisky@centos7 lab]$ echo "192.168.1.100 myserver" >> hosts-1

# hosts-2 也同步变化
[whisky@centos7 lab]$ cat hosts-2
127.0.0.1   localhost localhost.localdomain ...
::1         localhost localhost.localdomain ...
192.168.1.100 myserver
硬链接的特性
特性 说明
文件类型 普通文件(与源文件相同)
inode 与源文件相同
硬链接数 每增加一个硬链接,计数 +1
跨文件系统 ❌ 不可以(不同文件系统的 inode 编号不互通)
链接目录 ❌ 不可以(防止循环引用)
目标删除后 数据仍然存在(只要还有一个硬链接)
存储空间 不额外占用数据块(只是增加了一个目录项)

5.3 软链接 vs 硬链接 对比

维度 软链接(符号链接) 硬链接
本质 独立的文件,指向目标路径 同一文件的另一个"名字"
inode 不同 相同
跨文件系统 ✅ 可以 ❌ 不可以
可链接目录 ✅ 可以 ❌ 不可以
源文件删除后 ❌ 链接失效(断链) ✅ 数据仍可访问
占用额外空间 极小(存储路径字符串) 仅增加目录项(约几十字节)
识别方式 lrwxrwxrwx,有 -> 箭头 与普通文件无异,看硬链接数 >1

5.4 链接的实际应用场景

场景 推荐类型 原因
快捷访问深层目录 软链接 例如 ln -s /var/log/nginx ~/nginx-logs
版本切换(如 JDK) 软链接 java -> /usr/lib/jvm/java-11/bin/java
共享库版本管理 软链接 libc.so.6 -> libc-2.17.so
同一文件多个备份名 硬链接 节省空间,任一名称均可访问
避免误删重要数据 硬链接 只要还有一个链接,数据就不丢失

6. Shell 扩展匹配:通配符的艺术

当你要操作 100 个文件时,逐个输入文件名是极其低效的。Shell 通配符(Globbing) 让你用模式匹配批量选中文件。

6.1 通配符分类速查表

模式 匹配规则 示例
* 任意长度(含空)的任意字符 *.txt 匹配所有 txt 文件
? 单个任意字符 file-?.txt 匹配 file-1.txt,不匹配 file-10.txt
[abc] 括号中的任意一个字符 file-[abc].txt 匹配 file-a.txtfile-b.txt
[^abc][!abc] 不在括号中的任意字符 file-[^0-9].txt 匹配不含数字的文件名
[0-9] 范围匹配 file-[0-9].txt 匹配 file-0file-9
{a,b,c} 花括号展开(不是模式匹配,是字符串展开 echo {a,b,c}.txta.txt b.txt c.txt
{1..5} 数字范围展开 touch file-{1..5}.txt 创建 5 个文件
~ 当前用户家目录 cd ~/Documents
~username 指定用户的家目录 ls ~root

6.2 字符类(POSIX 字符集)

字符类 等价于 匹配范围
[[:alpha:]] [a-zA-Z] 所有字母
[[:lower:]] [a-z] 所有小写字母
[[:upper:]] [A-Z] 所有大写字母
[[:digit:]] [0-9] 所有数字
[[:alnum:]] [a-zA-Z0-9] 所有字母和数字
[[:space:]] 空格/制表符/换行等 空白字符
[[:punct:]] .,!?;: 标点符号(不含空格和字母数字)

6.3 实战示例

* ------ 匹配任意字符串
bash 复制代码
# 准备实验文件
[whisky@centos7 lab]$ touch file-1 file-2 file-a file-b file-10

# 匹配所有 file- 开头的文件
[whisky@centos7 lab]$ ls file-*
file-1  file-10  file-2  file-a  file-b

# 匹配所有 .txt 文件
[whisky@centos7 lab]$ ls *.txt
# 列出当前目录所有 txt 文件

# 复制 /etc 下所有 hosts 开头的文件到当前目录
[whisky@centos7 lab]$ cp /etc/hosts* .
[whisky@centos7 lab]$ ls hosts*
hosts  hosts.allow  hosts.deny
? ------ 匹配单个字符
bash 复制代码
# 匹配 file- 后跟 1 个字符的文件
[whisky@centos7 lab]$ ls file-?
file-1  file-2  file-a  file-b
# file-10 不匹配(因为 ? 只能匹配一个字符)

# 匹配 file- 后跟 2 个字符的文件
[whisky@centos7 lab]$ ls file-??
file-10
[] ------ 匹配指定字符集
bash 复制代码
# 匹配 file- 后跟数字的文件
[whisky@centos7 lab]$ ls file-[0-9]
file-1  file-2

# 匹配 file- 后跟字母 a 或 b 的文件
[whisky@centos7 lab]$ ls file-[ab]
file-a  file-b

# 匹配不以数字结尾的文件
[whisky@centos7 lab]$ ls file-[^0-9]
file-a  file-b
字符类示例
bash 复制代码
# 准备更多文件
[whisky@centos7 lab]$ touch file-A file-Z file-z file-9

# 匹配所有数字
[whisky@centos7 lab]$ ls file-[[:digit:]]
file-1  file-2  file-9

# 匹配所有大写字母
[whisky@centos7 lab]$ ls file-[[:upper:]]
file-A  file-Z

# 匹配所有字母(大小写)
[whisky@centos7 lab]$ ls file-[[:alpha:]]
file-a  file-A  file-b  file-z  file-Z
{} ------ 花括号展开(批量创建/操作)

{} 不是匹配已存在的文件,而是展开生成字符串列表

bash 复制代码
# 批量创建文件
[whisky@centos7 lab]$ touch file-{1..6}.txt
[whisky@centos7 lab]$ ls
file-1.txt  file-2.txt  file-3.txt  file-4.txt  file-5.txt  file-6.txt

# 批量创建目录
[whisky@centos7 lab]$ mkdir -p {Music,Pictures,Videos}/{2024,2025}
[whisky@centos7 lab]$ tree
.
├── Music
│   ├── 2024
│   └── 2025
├── Pictures
│   ├── 2024
│   └── 2025
└── Videos
    ├── 2024
    └── 2025

# 组合使用
[whisky@centos7 lab]$ echo file-{a,b,c}-{1,2}.txt
file-a-1.txt file-a-2.txt file-b-1.txt file-b-2.txt file-c-1.txt file-c-2.txt

⚠️ 重要区别*?[]通配符匹配 ------它们会去匹配实际存在的文件名。{}字符串展开 ------它不关心文件是否存在,只是按规则生成字符串。所以 rm file-{1..100}.txt 即使某些文件不存在也不会报错(当然也不会删除不存在的文件)。

6.4 通配符使用场景速查

场景 通配符写法 说明
删除所有 .log 文件 rm *.log 谨慎操作
复制所有以 conf 结尾的文件 cp *conf /backup/
查看第 1-9 个文件 ls file-[1-9] 注意 [1-9] 不匹配两位数
批量重命名 for f in *.txt; do mv "$f" "${f%.txt}.bak"; done 结合循环
批量创建 100 个目录 mkdir dir-{1..100} {} 展开
列出所有隐藏文件 ls .[!.]* 不包含 ...

7. 总结与速查手册

7.1 核心知识点一览

主题 关键点
mkdir -p 级联创建,-m 指定权限
cp 复制目录必须加 -r,目标目录存在时会作为子目录复制进去
mv 移动 + 重命名,同一文件系统内极快(只改目录项)
rm 删除不可逆!rm -rf 是双刃剑,慎用
软链接 ln -s,指向路径,可跨文件系统,目标删除则失效
硬链接 ln,同一 inode 的多个名字,不可跨文件系统,不可链接目录
通配符 *(任意)、?(单字符)、[](字符集)、{}(展开)

7.2 本章命令速查表

命令 常用形式 作用
mkdir mkdir -p /a/b/c 创建目录(含父目录)
cp cp -r source/ target/ 递归复制目录
mv mv file1 file2 移动或重命名
rm rm -rf dir/ 强制递归删除(⚠️ 慎用)
rmdir rmdir empty_dir/ 删除空目录
ln -s ln -s /target link 创建软链接
ln ln file1 file2 创建硬链接

7.3 文件操作对比一览

操作 单个文件 多个文件 目录(递归)
复制 cp a b cp a b c target_dir/ cp -r a_dir b_dir
移动 mv a b mv a b c target_dir/ mv a_dir b_dir
删除 rm a rm a b c rm -r a_dir

7.4 通配符速查卡

模式 匹配规则 示例匹配
* 任意长度(含 0)任意字符 *.txta.txtb.txt
? 恰好 1 个任意字符 file-?.txtfile-1.txt,不匹配 file-10.txt
[abc] a、b、c 中任意一个 file-[abc].txtfile-a.txt
[^abc] 不是 a、b、c 的任意字符 file-[^0-9].txtfile-a.txt
[0-9] 0~9 任意一个数字 file-[0-9].txtfile-1.txt
{a,b,c} 展开为 a、b、c echo {a,b}.txta.txt b.txt
{1..5} 展开为 1~5 touch file-{1..5}.txt → 创建 5 个文件

7.5 软链接与硬链接速查表

维度 软链接 硬链接
创建命令 ln -s ln
文件类型 l(独立文件) -(普通文件)
inode 不同 相同
跨文件系统
链接目录
源删除后 失效(断链) 仍然有效
占用额外空间 路径字符串大小 仅目录项

7.6 常见错误排查指南

错误信息 原因 解决方案
cp: 略过目录"xxx" 复制目录未加 -r -r 选项
rmdir: 删除失败: 目录非空 目录中有文件/子目录 rm -r 代替
ln: 无法创建硬链接: 无效的跨设备链接 硬链接跨文件系统 用软链接代替
ls: 无法访问: 没有那个文件或目录 通配符没有匹配到任何文件 检查通配符语法是否正确
执行 rm -rf $VAR/ 删除了整个系统 $VAR 变量为空 删除前先检查变量:echo "删除路径: $VAR"

7.7 思考与拓展(原课后作业转化)

  1. cp -rcp -a 有什么区别?
    -a(archive)等于 -dR --preserve=all,会保留权限、时间戳、所有者、硬链接关系等所有元数据;-r 只做递归复制,不保留这些属性。备份场景优先用 -a
  2. 为什么 rm 删除的文件无法恢复?
    rm 只是删除了文件名与 inode 的关联,并标记数据块为"空闲"。除非立即用专业工具扫描,否则数据块可能被新文件覆盖。Linux 没有"回收站"机制。
  3. 硬链接数的含义是什么?
    → 硬链接数表示"有多少个目录项指向同一个 inode"。创建新目录时,硬链接数会包含 ...。例如一个新空目录的硬链接数为 2(dir/ 自身 + dir/.)。
  4. 什么时候用软链接,什么时候用硬链接?
    → 链接目录用软链接;跨文件系统用软链接;想节省空间且同一文件系统内用硬链接;想让文件"防误删"用硬链接。
  5. rm -rf \*rm -rf \* .\* 有什么区别?
    rm -rf * 只删除非隐藏文件;rm -rf * .* 会匹配 ...,导致当前目录和父目录也被删除------极其危险,永远不要执行!

7.8 生产环境最佳实践

场景 建议
日常删除 ls 确认再 rm,或者先 mv/tmp 暂存
批量操作 先用 echo 测试通配符是否匹配正确,再执行实际命令
脚本中的 rm -rf 执行前必须检查变量非空:[ -n "$DIR" ] && rm -rf "$DIR"
备份文件 cp -a 保留完整属性
跨文件系统移动大文件 rsync -av --remove-source-files 代替 mv,支持断点续传
创建软链接 目标路径使用绝对路径,避免链接文件移动后失效

下期预告 :你已经能在 Linux 文件系统中自由"行走"和"整理"了,但遇到不会用的命令怎么办?下一期我们将学习 Linux 的"自学指南"------获取帮助 。从 man 手册的章节划分,到 --help 选项,再到 /usr/share/doc 下的文档和 which/whereis 查找工具,你将掌握"永远不再依赖搜索引擎"的自学方法论。同时我们还会进入 vim 编辑器的世界------它可能是学习曲线最陡但回报最高的工具。敬请期待第五期!
--- Compiled and Authored by Whisky --- July 7 th, 2026

相关推荐
bmy-happy1 小时前
网安专业课程笔记sale
笔记
岑梓铭1 小时前
考研408《操作系统》复习笔记,第四章《4.2.2 文件操作、文件共享、文件保护》
linux·考研·操作系统·文件系统·408
Mr.HeBoYan2 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk
XTIOT6662 小时前
CRPT 诚实标识采集落地技术实践:分工况硬件选型与合规数据标准化解决方案
大数据·运维·人工智能·嵌入式硬件·物联网
北冥you鱼2 小时前
Go语言sync包在区块链开发中的数据同步实践
golang·centos·区块链
浩瀚地学2 小时前
【Java基础复习】IO流(二)
java·开发语言·经验分享·笔记·学习
云栖梦泽3 小时前
从 IMX415 摄像头驱动理解 Media Controller 框架
linux·开发语言·c++·嵌入式硬件
纳兰青华3 小时前
CentOS Stream 9 下载与安装完全指南:为什么它是当前最稳妥的选择?
linux
草邦设计开发团队_媒体资源平台3 小时前
Linux 稳定常驻启动 PHP 队列,服务器重启自动恢复
linux·服务器·php·队列执行