第 11 课:复制、移动与删除文件
课程: Linux 系统管理与运维
当前课: 第 11 课 - 复习、移动与删除文件
所属模块: 文件管理
难度: 初级
标签: cp, mv, rm
上一课: man、help 与在线资源
下一课: 创建与删除目录
1. 学习目标
完成本课学习后,你将能够:
- 使用
cp命令复制文件和目录。 - 使用
mv命令移动(重命名)文件和目录。 - 使用
rm命令删除文件和目录。 - 了解并运用
cp、mv、rm命令的常用选项以提高操作效率和安全性。 - 理解这些命令的危险性,并养成谨慎操作的习惯。
2. 核心概念
文件管理就像整理你的房间。cp(复制)是制作一份相同的副本,mv(移动)是把东西从一个位置拿到另一个位置,或者给它换个名字(重命名),rm(删除)就是扔掉你不再需要的东西。在 Linux 命令行中,这三个命令是日常管理的基础,但 rm 命令尤其需要谨慎使用,因为被它删除的文件通常无法轻易找回。
cp 命令:复制文件与目录
基本语法: cp [选项] 源文件 目标文件
- 复制单个文件: 最直接的用法。
- 复制到目录: 如果目标是一个已存在的目录,文件会被复制到该目录下。
- 复制目录: 需要加上
-r(recursive,递归) 选项,因为目录内可能包含子目录和文件。
常用选项:
-r或-R: 递归复制目录及其所有内容。-i(interactive): 覆盖目标文件前提醒确认。-v(verbose): 显示详细的复制过程。
mv 命令:移动与重命名
基本语法: mv [选项] 源文件 目标文件
- 移动文件/目录: 将文件或目录移动到另一个位置。
- 重命名: 源和目标在同一目录下时,就是重命名操作。
- 移动到目录: 如果目标是一个已存在的目录,文件会被移动到该目录下。
常用选项:
-i: 覆盖目标文件前提醒确认。-v: 显示详细的移动过程。
rm 命令:删除文件与目录
基本语法: rm [选项] 文件...
- 删除文件: 直接删除指定的文件。
- 删除目录: 必须使用
-r选项来递归删除目录及其所有内容。
常用选项:
-r或-R: 递归删除目录。-i: 删除每个文件前提醒确认。-f(force): 强制删除,忽略不存在的文件,不提示确认。- 危险组合:
rm -rf /会试图删除整个系统!请绝对避免。
3. 代码示例
让我们在一个练习环境中操作。请打开终端,依次执行以下命令。
# 0. 准备练习环境
mkdir -p ~/linux_lab/practice_11 && cd ~/linux_lab/practice_11
echo "This is the original file." > original.txt
mkdir my_folder
echo "A file inside the folder." > my_folder/inner_file.txt
# 1. 复制文件 (cp)
# 将 original.txt 复制一份,命名为 copied.txt
cp original.txt copied.txt
# 使用 -i 选项尝试覆盖 copied.txt,终端会提示
cp -i original.txt copied.txt
# 查看复制结果
ls -l original.txt copied.txt
# 递归复制整个 my_folder 目录,命名为 my_folder_backup
cp -r my_folder my_folder_backup
ls -R my_folder_backup
# 2. 移动/重命名文件 (mv)
# 将 copied.txt 重命名为 renamed.txt
mv copied.txt renamed.txt
# 将 renamed.txt 移动到 my_folder 目录内
mv renamed.txt my_folder/
ls my_folder
# 将 my_folder 内的 renamed.txt 移动回当前目录,并改回名
mv my_folder/renamed.txt .
# 3. 删除文件和目录 (rm)
# 删除单个文件
rm renamed.txt
# 尝试用 -i 选项删除,交互式确认
rm -i original.txt
# 递归删除目录 my_folder_backup
rm -r my_folder_backup
# 再次查看当前目录,只剩下 my_folder 和 original.txt
ls -l
# 4. 组合使用与通配符
# 创建几个临时文件
touch file1.txt file2.txt fileA.txt fileB.txt
# 使用通配符 (*) 复制所有 .txt 文件到 my_folder
cp *.txt my_folder/
ls my_folder
# 使用通配符删除当前目录下所有以 ‘file’ 开头的文件
rm file*.txt
# 注意:在执行带通配符的 `rm` 命令前,最好先用 `ls file*.txt` 预览一下将被删除的文件。
# 5. 清理练习环境
cd ~
rm -r ~/linux_lab/practice_11
echo "Practice 11 environment cleaned up."
4. 实践练习
练习 1:基础操作
- 在你的家目录下创建文件
report.txt,内容为“This is my report.”。 - 将它复制一份,命名为
report_backup.txt。 - 创建一个目录
~/documents,并将report.txt移动到该目录下。 - 删除
report_backup.txt。 预期结果: 最终~/documents/report.txt存在,report_backup.txt不存在。
练习 2:目录与确认
- 创建目录结构
~/project/source和~/project/backup。 - 在
source目录下创建文件code.py。 - 使用一条命令,将整个
source目录递归复制到backup目录下。 - 使用
rm -ri命令交互式地删除backup目录。观察删除过程。 预期结果:backup目录下应存在一个与source完全相同的副本,删除时会有确认提示。
练习 3:重命名与批量处理
- 创建文件
log_20230901.txt,log_20230902.txt,log_20230903.txt。 - 使用通配符和
mv命令,将它们全部重命名为.log扩展名 (例如log_20230901.log)。 - 创建一个新目录
~/logs,并移动所有.log文件到该目录。 提示: 重命名可以借助循环或rename命令(如果可用)。一个简单的循环示例:for file in log_*.txt; do mv "$file" "${file%.txt}.log" done
5. 常见错误
- 忘记
-r选项: 尝试用cp my_folder new_folder复制目录会失败,系统会提示 “omitting directory”。正确做法是cp -r my_folder new_folder。 - 误删文件: 最严重的错误。
rm命令没有“回收站”(图形界面可能有)。在执行rm -rf *或类似命令前,务必再三检查路径和文件名。养成先用ls确认的习惯。 - 路径错误导致意外操作: 在根目录
/或家目录~下执行rm -rf *将是灾难性的。确保你处于正确的目录。一个安全技巧是,在运行危险的rm命令前,先用echo测试一下通配符展开的结果,例如echo rm -rf *.log。 - 覆盖重要文件而不自知: 复制或移动时,如果目标位置已有同名文件,默认会静默覆盖。使用
-i选项可以避免这个问题。 - 混淆
mv和cp:mv是移动(原文件消失),cp是复制(原文件保留)。在需要保留原文件时,不要用错。
6. 小结
本课我们学习了三个最核心的文件管理命令:
cp用于复制。复制目录时必须加-r。mv用于移动和重命名。rm用于删除,删除目录时必须加-r。
关键要点:
- 递归选项
-r是操作目录时的关键。 - 交互选项
-i是防止误操作的安全带,建议在重要操作时使用。 rm命令威力巨大且不可逆,请始终保持敬畏之心。在执行包含通配符*的rm命令前,请务必确认。- 善用
-v选项查看命令执行的详细过程,这有助于理解命令的行为和调试。
掌握这些命令及其安全选项,你将能高效、安全地管理 Linux 系统上的文件与目录。在下一课中,我们将学习如何使用 mkdir 和 rmdir 专门管理目录。
练习编辑器
rust
Loading...