实验环境

系统:CentOS 7.9

普通用户:meng

功能:软硬链接、目录创建 / 复制 / 移动 / 删除、命令报错演示,每行命令上方注释,附带执行输出

一、软链接 ln -s 实操

# 查看/bin目录基础信息
[meng@centos7 ~ 19:09:44]$ ls -d /bin/
/bin/

# 创建软链接a,指向系统目录/run/radvd/
[meng@centos7 ~ 19:09:51]$ ln -s /run/radvd/ a

# 查看当前目录文件,确认软链接a生成
[meng@centos7 ~ 19:11:50]$ ls
a  公共  模板  视频  图片  文档  下载  音乐  桌面

# ls -l 长格式查看软链接属性,箭头显示指向路径
[meng@centos7 ~ 19:12:08]$ ls -l a
lrwxrwxrwx. 1 meng meng 11 7月  15 19:11 a -> /run/radvd/

# ls -ld 只查看链接本身,不进入链接指向目录
[meng@centos7 ~ 19:12:15]$ ls -ld a
lrwxrwxrwx. 1 meng meng 11 7月  15 19:11 a -> /run/radvd/

# ls -d 仅打印文件名,不展示详情
[meng@centos7 ~ 19:12:32]$ ls -d a
a

# 对软链接a创建硬链接b(硬链接绑定软链接本身inode)
[meng@centos7 ~ 19:13:07]$ ln a b

# 查看目录,a、b两个链接均存在
[meng@centos7 ~ 19:13:09]$ ls
a  b  公共  模板  视频  图片  文档  下载  音乐  桌面

# 长格式对比a、b,硬链接计数变为2
[meng@centos7 ~ 19:14:00]$ ls -l a b
lrwxrwxrwx. 2 meng meng 11 7月  15 19:11 a -> /run/radvd/
lrwxrwxrwx. 2 meng meng 11 7月  15 19:11 b -> /run/radvd/

# ls -1il 显示inode编号,a和b inode完全一致
[meng@centos7 ~ 19:14:28]$ ls -1il a b
96 lrwxrwxrwx. 2 meng meng 11 7月  15 19:11 a -> /run/radvd/
96 lrwxrwxrwx. 2 meng meng 11 7月  15 19:11 b -> /run/radvd/

# 创建空文件c,尝试移动到软链接a内(/run/radvd属root,普通用户无权限)
[meng@centos7 ~ 19:14:52]$ touch c
[meng@centos7 ~ 19:15:10]$ mv c a
mv: 无法创建普通文件"a/c": 权限不够

# 带斜杠写法同样权限不足
[meng@centos7 ~ 19:15:15]$ mv c a/
mv: 无法创建普通文件"a/c": 权限不够

# touch修改软链接时间戳,权限不足报错
[meng@centos7 ~ 19:15:19]$ touch a
touch: 正在设置"a" 的时间: 权限不够
[meng@centos7 ~ 19:15:53]$ touch b
touch: 正在设置"b" 的时间: 权限不够

# 切换root用户操作软链接a
[meng@centos7 ~ 19:16:22]$ su -
密码:
上一次登录:三 7月  15 10:39:44 CST 2026pts/1 上
[root@centos7 ~ 19:16:50]# touch a
[root@centos7 ~ 19:16:55]# exit
登出

# 普通用户查看,表面链接无变化
[meng@centos7 ~ 19:16:59]$ ls -l a b
lrwxrwxrwx. 2 meng meng 11 7月  15 19:11 a -> /run/radvd/
lrwxrwxrwx. 2 meng meng 11 7月  15 19:11 b -> /run/radvd/

# 再次切换root,发现b消失,a被覆盖为普通文件
[meng@centos7 ~ 19:17:09]$ su -
密码:
上一次登录:三 7月  15 19:16:50 CST 2026pts/0 上
[root@centos7 ~ 19:17:21]# ls -l a b
ls: 无法访问b: 没有那个文件或目录
-rw-r--r--. 1 root root 0 7月  15 19:16 a
[root@centos7 ~ 19:17:31]# exit
登出

# 普通用户操作残留b,依旧权限报错
[meng@centos7 ~ 19:17:43]$ touch b
touch: 正在设置"b" 的时间: 权限不够

二、普通文件硬链接 ln 实操

# 创建空文件c
[meng@centos7 ~ 19:18:33]$ touch c

# 给c创建硬链接d,共用同一个inode
[meng@centos7 ~ 19:21:26]$ ln c d

# 查看硬链接属性,链接计数=2
[meng@centos7 ~ 19:22:05]$ ls -l c d
-rw-rw-r--. 2 meng meng 0 7月  15 19:21 c
-rw-rw-r--. 2 meng meng 0 7月  15 19:21 d

# touch更新c时间戳,硬链接d同步更新时间
[meng@centos7 ~ 19:22:20]$ touch  c
[meng@centos7 ~ 19:22:35]$ ls -l c d
-rw-rw-r--. 2 meng meng 0 7月  15 19:22 c
-rw-rw-r--. 2 meng meng 0 7月  15 19:22 d

三、mkdir 创建目录(含拼写错误踩坑)

# 创建单个目录lab
[meng@centos7 ~ 18:47:53]$ mkdir lab
[meng@centos7 ~ 18:50:23]$ ls
lab  公共  模板  视频  图片  文档  下载  音乐  桌面

# 一次性创建多个同级目录 lab1 lab2
[meng@centos7 ~ 18:50:24]$ mkdir lab1 lab2
[meng@centos7 ~ 18:51:24]$ ls
lab   lab2  模板  图片  下载  桌面
lab1  公共  视频  文档  音乐

# 命令拼写错误 makdir,系统提示未找到命令
[meng@centos7 ~ 18:51:26]$ makdir -p dir0/1/2/3/4
bash: makdir: 未找到命令...
[meng@centos7 ~ 18:51:53]$ makdir -p dir0/d1/d2/d3/d4
bash: makdir: 未找到命令...
[meng@centos7 ~ 18:52:03]$ makdir -p dir0/d1/d2/d3
bash: makdir: 未找到命令...

# 正确命令 mkdir -p 递归创建多级目录
[meng@centos7 ~ 18:52:12]$ mkdir -p dir0/d1/d2/d3

# tree查看dir0树形结构
[meng@centos7 ~ 18:52:31]$ tree dir0
dir0
└── d1
    └── d2
        └── d3
3 directories, 0 files

# tree查看当前完整家目录结构
[meng@centos7 ~ 18:52:36]$ tree 
.
├── dir0
│   └── d1
│       └── d2
│           └── d3
├── lab
├── lab1
├── lab2
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
└── 桌面
    ├── 笔记.docx
    └── 测试.txt
15 directories, 2 files

四、cp 复制目录 / 文件(常见报错演示)

# 错误:绝对路径写错 /dir0,dir0在家目录,不在根目录
[meng@centos7 ~ 18:54:12]$ cp /dir0/d1 .
cp: 无法获取"/dir0/d1" 的文件状态(stat): 没有那个文件或目录

# cp仅写目录名,缺少目标参数,语法报错
[meng@centos7 ~ 18:54:41]$ cp dir0
cp: 在"dir0" 后缺少了要操作的目标文件
Try 'cp --help' for more information.

# 复制目录不加-r参数,直接跳过目录
[meng@centos7 ~ 18:54:48]$ cp dir0 .
cp: 略过目录"dir0"

# 错误绝对路径复制多层子目录
[meng@centos7 ~ 18:54:56]$ cp /dir0/d1/d2/d3 .
cp: 无法获取"/dir0/d1/d2/d3" 的文件状态(stat): 没有那个文件或目录

# 正确:cp -r 递归复制目录(相对路径)
[meng@centos7 ~ 18:55:27]$ cp -r dir0/d1 .
[meng@centos7 ~ 18:55:43]$ ls
d1    lab   lab2  模板  图片  下载  桌面
dir0  lab1  公共  视频  文档  音乐

# 复制多层子目录d3到当前目录
[meng@centos7 ~ 18:55:45]$ cp -r dir0/d1/d2/d3 .
[meng@centos7 ~ 18:55:57]$ ls
d1  dir0  lab1  公共  视频  文档  音乐
d3  lab   lab2  模板  图片  下载  桌面

# 多源复制,目标d4不存在,报错
[meng@centos7 ~ 18:55:59]$ cp -r dir0/d1/d2/d3 ./d4 d3/
cp: 无法获取"./d4" 的文件状态(stat): 没有那个文件或目录

# 复制d3到d3目录内
[meng@centos7 ~ 18:56:31]$ cp -r dir0/d1/d2/d3  d3/
[meng@centos7 ~ 18:56:47]$ ls d3
d3

# 多源复制,最后目标不能是不存在文件
[meng@centos7 ~ 18:56:52]$ cp -r dir0/d1/d2/d3  d3/ ./d4
cp: 目标"./d4" 不是目录

# 复制多层目录并重命名为d4
[meng@centos7 ~ 18:57:17]$ cp -r dir0/d1/d2/d3 ./d4 
[meng@centos7 ~ 18:57:23]$ ls
d1  d4    lab   lab2  模板  图片  下载  桌面
d3  dir0  lab1  公共  视频  文档  音乐

# 进入lab目录,复制系统yum目录到本地
[meng@centos7 ~ 18:57:24]$ cd lab
[meng@centos7 lab 18:58:20]$ cp -r /etc/yum .
[meng@centos7 lab 18:58:33]$ ls
yum
# 返回家目录
[meng@centos7 lab 18:58:35]$ cd ~

五、mv 移动 / 重命名命令演示

# 将d1移动到d3目录内部
[meng@centos7 ~ 19:00:00]$ mv d1 d3/
[meng@centos7 ~ 19:00:17]$ ls d3
d1  d3

# 将d3重命名为d5
[meng@centos7 ~ 19:00:24]$ mv d3 ./d5
[meng@centos7 ~ 19:00:41]$ ls
d4  dir0  lab1  公共  视频  文档  音乐
d5  lab   lab2  模板  图片  下载  桌面

# 多文件移动,目标d3不存在,报错
[meng@centos7 ~ 19:01:02]$ mv d5 ./d5 d3
mv: 目标"d3" 不是目录
[meng@centos7 ~ 19:01:10]$ mv d5 ./d5 d3/
mv: 目标"d3/" 不是目录

# 创建d4目录,提示文件已存在(d4是之前复制的目录)
[meng@centos7 ~ 19:01:10]$ mkdir d4
mkdir: 无法创建目录"d4": 文件已存在

# 创建空文件d,移动到lab2目录
[meng@centos7 ~ 19:04:00]$ touch d lab2
[meng@centos7 ~ 19:04:44]$ ls lab2
[meng@centos7 ~ 19:05:41]$ mv d lab2/
[meng@centos7 ~ 19:06:06]$ ls lab2
d

六、rm /rmdir 删除目录文件(拼写错误 + 报错)

# 拼写错误 mr,系统提示相似命令rm
[meng@centos7 ~ 19:01:53]$ mr d4
bash: mr: 未找到命令...
相似命令是: 'rm'

# rm直接删除目录,报错(rm默认只能删文件)
[meng@centos7 ~ 19:01:59]$ rm d4
rm: 无法删除"d4": 是一个目录

# rmdir删除空目录d4
[meng@centos7 ~ 19:02:05]$ rmdir d4
[meng@centos7 ~ 19:02:13]$ ls
d5    lab   lab2  模板  图片  下载  桌面
dir0  lab1  公共  视频  文档  音乐

# 创建空目录r4
[meng@centos7 ~ 19:02:20]$ mkdir r4

# 拼写错误mr删除r4
[meng@centos7 ~ 19:03:08]$ mr r4
bash: mr: 未找到命令...
相似命令是: 'rm'

# rm删除目录报错,加-r递归删除
[meng@centos7 ~ 19:03:17]$ rm  r4
rm: 无法删除"r4": 是一个目录
[meng@centos7 ~ 19:03:23]$ rm -r r4
[meng@centos7 ~ 19:03:29]$ ls
d5    lab   lab2  模板  图片  下载  桌面
dir0  lab1  公共  视频  文档  音乐

# 拼写错误mr删除d5目录
[meng@centos7 ~ 19:03:31]$ mr -r d5
bash: mr: 未找到命令...
相似命令是: 'rm'
[meng@centos7 ~ 19:03:49]$ mr -r d5
bash: mr: 未找到命令...
相似命令是: 'rm'

# 正确 rm -r 递归删除非空目录d5
[meng@centos7 ~ 19:03:55]$ rm -r d5
[meng@centos7 ~ 19:03:59]$ ls
dir0  lab1  公共  视频  文档  音乐
lab   lab2  模板  图片  下载  桌面

# 递归删除lab2目录(内部有文件d)
[meng@centos7 ~ 19:06:11]$ rm -r lab2
[meng@centos7 ~ 19:06:26]$ ls lab2
ls: 无法访问lab2: 没有那个文件或目录
[meng@centos7 ~ 19:06:35]$ ls 
dir0  lab1  模板  图片  下载  桌面
lab   公共  视频  文档  音乐

# 批量删除多个目录
[meng@centos7 ~ 19:08:34]$ rm -r dir0/ lab lab1
[meng@centos7 ~ 19:08:54]$ ls
公共  模板  视频  图片  文档  下载  音乐  桌面

# 查看/bin目录属性收尾
[meng@centos7 ~ 19:08:56]$ ls -dl /bin/
dr-xr-xr-x. 2 root root 49152 7月  15 10:45 /bin/

七、核心知识点总结

  1. 软链接 ln -s
    • 独立 inode,类似快捷方式,可链接目录、跨分区
    • 普通用户访问系统保护目录(/run/radvd)会报权限不足
    • root 直接 touch 软链接会覆盖软链接,转为普通文件,硬链接同步失效
  2. 硬链接 ln
    • 与源文件共用 inode,链接计数 + 1,修改任意文件同步生效
    • 不能链接目录、不能跨分区;对软链接创建硬链接仅绑定软链接本身
  3. 目录操作命令区分
    • mkdir -p:递归创建多层目录;注意不要拼写为 makdir
    • cp -r:复制目录必须加 - r,不加会跳过目录
    • mv:同路径为重命名,跨路径为移动;多文件移动目标必须是已存在目录
    • rmdir:仅删除空目录;rm -r:递归删除非空目录
  4. 高频报错汇总
    • makdir/mr:命令拼写错误,正确为 mkdir、rm
    • cp: 略过目录:缺少 - r 参数
    • 权限不够:软链接指向 root 私有目录,普通用户无读写权限
    • 无法删除 xxx:是一个目录:rm 删除目录缺少 - r 参数

Linux 文件综合实操练习(Shell 通配符文件管理)

完整操作步骤(用户名替换为 meng)
1. 在用户主目录创建 3 个媒体目录:Music、Pictures、Videos
[meng@centos7 ~ 14:34:12]$ mkdir Music Pictures Videos
[meng@centos7 ~ 14:34:15]$ ls -d Music Pictures Videos
Music  Pictures  Videos
2. 在主目录批量创建三类媒体文件(1~6 序号)
[meng@centos7 ~ 14:34:28]$ touch song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3
[meng@centos7 ~ 14:36:05]$ touch snap1.jpg snap2.jpg snap3.jpg snap4.jpg snap5.jpg snap6.jpg
[meng@centos7 ~ 14:37:04]$ touch film1.avi film2.avi film3.avi film4.avi film5.avi film6.avi
[meng@centos7 ~ 14:37:34]$ ls
film1.avi  film4.avi  Music      snap2.jpg  snap5.jpg  song2.mp3  song5.mp3  公共  图片  音乐
film2.avi  film5.avi  Pictures   snap3.jpg  snap6.jpg  song3.mp3  song6.mp3  模板  文档  桌面
film3.avi  film6.avi  snap1.jpg  snap4.jpg  song1.mp3  song4.mp3  Videos     视频  下载
3. 所有 songX.mp3 文件移动到 Music 目录
[meng@centos7 ~ 14:38:46]$ mv song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3 Music/
[meng@centos7 ~ 14:39:06]$ ls Music/
song1.mp3  song2.mp3  song3.mp3  song4.mp3  song5.mp3  song6.mp3
4. 所有 snapX.jpg 文件移动到 Pictures 目录
[meng@centos7 ~ 14:39:18]$ mv snap1.jpg snap2.jpg snap3.jpg snap4.jpg snap5.jpg snap6.jpg Pictures/
[meng@centos7 ~ 14:39:52]$ ls Pictures/
snap1.jpg  snap2.jpg  snap3.jpg  snap4.jpg  snap5.jpg  snap6.jpg
5. 所有 filmX.avi 文件移动到 Videos 目录
[meng@centos7 ~ 14:39:53]$ mv film1.avi film2.avi film3.avi film4.avi film5.avi film6.avi Videos/
[meng@centos7 ~ 14:40:12]$ ls Videos/
film1.avi  film2.avi  film3.avi  film4.avi  film5.avi  film6.avi

[meng@centos7 ~ 14:40:13]$ ls
Music  Pictures  Videos  公共  模板  视频  图片  文档  下载  音乐  桌面
6. 创建分类目录 friends、family、work
[meng@centos7 ~ 14:40:41]$ mkdir friends family work
[meng@centos7 ~ 14:41:10]$ ls -d friends family work
family  friends  work
7. 按序号复制文件到对应分类目录

1、2 号文件 → friends;3、4 号 → family;5、6 号 → work

[meng@centos7 ~ 14:43:22]$ cp Music/song1.mp3 Music/song2.mp3 Pictures/snap1.jpg Pictures/snap2.jpg Videos/film1.avi Videos/film2.avi friends/
[meng@centos7 ~ 14:44:59]$ ls friends/
film1.avi  film2.avi  snap1.jpg  snap2.jpg  song1.mp3  song2.mp3

[meng@centos7 ~ 14:45:01]$ cp Music/song3.mp3 Music/song4.mp3 Pictures/snap3.jpg Pictures/snap4.jpg Videos/film3.avi Videos/film4.avi family/
[meng@centos7 ~ 14:45:11]$ ls family/
film3.avi  film4.avi  snap3.jpg  snap4.jpg  song3.mp3  song4.mp3

[meng@centos7 ~ 14:45:34]$ cp Music/song5.mp3 Music/song6.mp3 Pictures/snap5.jpg Pictures/snap6.jpg Videos/film5.avi Videos/film6.avi work/
[meng@centos7 ~ 14:46:09]$ ls work/
film5.avi  film6.avi  snap5.jpg  snap6.jpg  song5.mp3  song6.mp3
8. 递归复制 family、friends 目录到 /tmp
[meng@centos7 ~ 14:46:16]$ cp -r family/ friends/ /tmp
[meng@centos7 ~ 14:47:32]$ ls -d /tmp/family/ /tmp/friends/
/tmp/family/  /tmp/friends/
9. 删除家目录下 family、friends 目录
[meng@centos7 ~ 14:47:40]$ rm -r family/ friends/
[meng@centos7 ~ 14:48:04]$ ls family/ friends/
ls: 无法访问family/: 没有那个文件或目录
ls: 无法访问friends/: 没有那个文件或目录
10. 清空 work 内所有文件,再删除 work 空目录
[meng@centos7 ~ 14:48:25]$ cd work/
[meng@centos7 work 14:48:43]$ ls
film5.avi  film6.avi  snap5.jpg  snap6.jpg  song5.mp3  song6.mp3
[meng@centos7 work 14:48:44]$ rm film5.avi  film6.avi  snap5.jpg  snap6.jpg  song5.mp3  song6.mp3

[meng@centos7 work 14:48:49]$ cd ..
[meng@centos7 ~ 14:48:50]$ rmdir work/
11. 创建软链接 mytmp 指向 /var/tmp 并验证
[meng@centos7 ~ 14:48:55]$ ln -s /var/tmp mytmp
[meng@centos7 ~ 14:49:44]$ ls -l mytmp
lrwxrwxrwx. 1 meng meng 8 7月  15 14:49 mytmp -> /var/tmp
12. 清理本次实验全部创建的文件与目录
[meng@centos7 ~ 14:50:28]$ rm -r Music mytmp Pictures Videos
[meng@centos7 ~ 14:51:03]$ rm -r /tmp/family/ /tmp/friends/
优化拓展(通配符简化写法)

不用手动罗列所有文件名,使用 * 通配符简化命令:

# 批量移动所有mp3到Music
mv song*.mp3 Music/
# 批量复制1、2号文件到friends
cp */*[12].* friends/
# 批量复制3、4号文件到family
cp */*[34].* family/
# 批量复制5、6号文件到work
cp */*[56].* work/
# 清空work目录所有文件
rm work/*
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐