11·文件管理入门

复制、移动与删除文件

cpmvrm

第 11 课:复制、移动与删除文件

课程: Linux 系统管理与运维
当前课: 第 11 课 - 复习、移动与删除文件
所属模块: 文件管理
难度: 初级
标签: cp, mv, rm
上一课: man、help 与在线资源
下一课: 创建与删除目录


1. 学习目标

完成本课学习后,你将能够:

  1. 使用 cp 命令复制文件和目录。
  2. 使用 mv 命令移动(重命名)文件和目录。
  3. 使用 rm 命令删除文件和目录。
  4. 了解并运用 cpmvrm 命令的常用选项以提高操作效率和安全性。
  5. 理解这些命令的危险性,并养成谨慎操作的习惯。

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:基础操作

  1. 在你的家目录下创建文件 report.txt,内容为“This is my report.”。
  2. 将它复制一份,命名为 report_backup.txt
  3. 创建一个目录 ~/documents,并将 report.txt 移动到该目录下。
  4. 删除 report_backup.txt预期结果: 最终 ~/documents/report.txt 存在,report_backup.txt 不存在。

练习 2:目录与确认

  1. 创建目录结构 ~/project/source~/project/backup
  2. source 目录下创建文件 code.py
  3. 使用一条命令,将整个 source 目录递归复制到 backup 目录下。
  4. 使用 rm -ri 命令交互式地删除 backup 目录。观察删除过程。 预期结果: backup 目录下应存在一个与 source 完全相同的副本,删除时会有确认提示。

练习 3:重命名与批量处理

  1. 创建文件 log_20230901.txt, log_20230902.txt, log_20230903.txt
  2. 使用通配符和 mv 命令,将它们全部重命名为 .log 扩展名 (例如 log_20230901.log)。
  3. 创建一个新目录 ~/logs,并移动所有 .log 文件到该目录。 提示: 重命名可以借助循环或 rename 命令(如果可用)。一个简单的循环示例:
    for file in log_*.txt; do
        mv "$file" "${file%.txt}.log"
    done
    

5. 常见错误

  1. 忘记 -r 选项: 尝试用 cp my_folder new_folder 复制目录会失败,系统会提示 “omitting directory”。正确做法是 cp -r my_folder new_folder
  2. 误删文件: 最严重的错误。rm 命令没有“回收站”(图形界面可能有)。在执行 rm -rf * 或类似命令前,务必再三检查路径和文件名。养成先用 ls 确认的习惯。
  3. 路径错误导致意外操作: 在根目录 / 或家目录 ~ 下执行 rm -rf * 将是灾难性的。确保你处于正确的目录。一个安全技巧是,在运行危险的 rm 命令前,先用 echo 测试一下通配符展开的结果,例如 echo rm -rf *.log
  4. 覆盖重要文件而不自知: 复制或移动时,如果目标位置已有同名文件,默认会静默覆盖。使用 -i 选项可以避免这个问题。
  5. 混淆 mvcp mv 是移动(原文件消失),cp 是复制(原文件保留)。在需要保留原文件时,不要用错。

6. 小结

本课我们学习了三个最核心的文件管理命令:

  • cp 用于复制。复制目录时必须加 -r
  • mv 用于移动重命名
  • rm 用于删除,删除目录时必须加 -r

关键要点:

  1. 递归选项 -r 是操作目录时的关键。
  2. 交互选项 -i 是防止误操作的安全带,建议在重要操作时使用。
  3. rm 命令威力巨大且不可逆,请始终保持敬畏之心。在执行包含通配符 *rm 命令前,请务必确认。
  4. 善用 -v 选项查看命令执行的详细过程,这有助于理解命令的行为和调试。

掌握这些命令及其安全选项,你将能高效、安全地管理 Linux 系统上的文件与目录。在下一课中,我们将学习如何使用 mkdirrmdir 专门管理目录。

练习编辑器

rust
Loading...

继续学习

完成本课后,建议继续学习下一课「创建与删除目录」 以巩固所学知识。