超详细 Linux 文件管理实训|12 道综合练习题完整代码 + 运行结果 + 避坑总结
·
实验环境
系统: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/
七、核心知识点总结
- 软链接 ln -s
- 独立 inode,类似快捷方式,可链接目录、跨分区
- 普通用户访问系统保护目录(/run/radvd)会报权限不足
- root 直接 touch 软链接会覆盖软链接,转为普通文件,硬链接同步失效
- 硬链接 ln
- 与源文件共用 inode,链接计数 + 1,修改任意文件同步生效
- 不能链接目录、不能跨分区;对软链接创建硬链接仅绑定软链接本身
- 目录操作命令区分
mkdir -p:递归创建多层目录;注意不要拼写为 makdircp -r:复制目录必须加 - r,不加会跳过目录mv:同路径为重命名,跨路径为移动;多文件移动目标必须是已存在目录rmdir:仅删除空目录;rm -r:递归删除非空目录
- 高频报错汇总
- 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/*
更多推荐

所有评论(0)