rm(删除)
100%

命令行 · 第 13 课

rm(删除)

学习在确认目标并选择更安全的 rm 选项后删除文件和目录。

rm 命令用于移除文件系统条目。命令行删除通常不会把条目送入桌面回收站,而且 rm 没有内置撤销功能,因此运行前应确认每个目标。

基本语法是:

rm [OPTIONS] FILE...

删除文件

要删除一个文件,只需将文件名传递给 rm

$ rm file1

你也可以一次删除多个文件,只需依次列出它们。

$ rm notes.txt old-report.txt draft.md

按 Enter 前应检查拼写和位置。删除后依赖备份或版本控制副本恢复,要比指望文件系统恢复工具更可靠。

确认目标无误后,哪个命令会删除文件 old-report.txt

预览通配符目标

Shell 通配符允许你匹配多个文件。例如,这条命令会删除当前目录下所有 .tmp 文件:

$ rm *.tmp

在使用带通配符的 rm 之前,最好先用 ls 预览匹配的文件。

$ ls *.tmp
cache.tmp  test.tmp
$ rm *.tmp

shell 会在 rm 启动前展开模式。如果预览中出现意外文件,应修改模式,而不是继续执行。

你准备删除 *.tmp。哪个命令会先显示该模式选中的非隐藏路径,而不删除它们?

请求确认

为了更安全,可以使用 -i 选项。它会在删除每个文件前提示确认。

$ rm -i important.txt
rm: remove regular file 'important.txt'? y

GNU rm-I 是干扰更少的保护措施:当命令将删除三个以上文件或执行递归操作时,它只询问一次。

哪个命令会在删除每个指定文件前请求确认?

使用 -f 忽略缺失文件

-f 选项表示“强制”。它会忽略不存在的文件且不提示确认。

$ rm -f old-cache.txt

如果生成的文件可能已经不存在,这能让脚本清理操作保持幂等。由于它会取消确认,不要只为了压下尚未理解的错误而添加 -f

删除目录

默认情况下,rm 不能删除目录。

$ rm projects
rm: cannot remove 'projects': Is a directory

要删除目录及其内部所有内容,使用 -r-R 进行递归删除。

$ rm -r old-project

对于空目录,rmdir 是范围更窄的替代命令:

$ rmdir empty-directory

rmdir 会在目录非空时失败,从而保护其中内容不被递归删除。

哪个命令只在 old-cache/ 为空时删除该目录?

检查递归删除

递归删除可以清除整棵目录树。把 -r-f 结合还会取消提示,因此使用 rm -rf 前必须特别仔细地验证目标。执行任何递归删除前,请检查:

  • 你是否处于预期目录?使用 pwd
  • ls -ld -- TARGET 是否显示预期的顶层路径?
  • 如果涉及通配符,只读预览是否准确匹配预期内容?
  • 路径是绝对路径还是相对路径?/tmp/cachetmp/cache 差别很大。
  • 是否有意外空格?rm -rf old-projectrm -rf old project 指向不同路径。

如果目标可能以连字符开头,请在它之前使用 --,避免被解释为选项:

$ rm -- -old-name

不要仅因为 rm 报告权限错误就直接使用 sudo。应先确认目标,并查明当前账户为何不能修改其所在目录。提升权限的递归删除可能损坏操作系统或其他用户的数据。

需要让 rm 报告每次成功删除时,可以使用 -v

$ rm -rv old-project
removed 'old-project/notes.txt'
removed directory 'old-project'

确认完整目标无误后,哪个命令会删除 old-project/ 及其下所有内容,同时仍允许正常提示?

要在受控环境中练习删除,可以尝试以下动手实验:

  1. Linux rm 命令:文件删除 - 学习如何使用 rm 命令删除文件和目录,包括 -r-i 等选项,练习安全有效的文件删除。
  2. 文件和目录的组织 - 练习基本的 Linux 文件管理技能,包括使用 rm 命令清理不必要的目录,通过实际挑战提升能力。

课程已完成

你已完成 rm(删除)

现在,你可以删除文件系统条目,并把每个目标都视为不可撤销操作。

  • 删除前确认文件路径。

  • 使用只读命令预览通配符展开结果。

  • 使用 -i-I 请求确认。

  • 目录必须为空时优先使用 rmdir

  • 使用递归删除前验证整个目标。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 命令行