这是一个非常强大且具有破坏性的命令,一旦文件被删除,就很难恢复,所以使用时必须格外小心。

命令简介
rm 命令的基本功能是删除一个或多个文件或目录。
语法格式:
rm [选项]... 文件或目录...
常用选项
rm 命令的选项决定了它的行为和安全级别。
| 选项 | 全称 | 描述 | 示例 |
|---|---|---|---|
-f |
--force |
强制删除,忽略不存在的文件,无需确认,并只读文件。 | rm -f file.txt |
-i |
--interactive |
交互式删除,在删除每个文件前都提示用户确认。 | rm -i file.txt |
-r |
--recursive |
递归删除,删除目录及其下的所有内容(文件和子目录)。 | rm -r my_dir |
-d |
--dir |
删除空目录,只删除空目录。 | rm -d empty_dir |
-v |
--verbose |
详细模式,显示正在删除的文件。 | rm -v file.txt |
--no-preserve-root |
不将 '/' 特殊对待(默认行为)。 | ||
--preserve-root |
在递归删除时,拒绝删除根目录 。 |
常用用法示例
示例 1:删除文件(最基本用法)
这是 rm 最简单的用法,直接删除一个或多个文件。

# 删除单个文件 rm file1.txt # 删除多个文件 rm file1.txt file2.txt file3.txt
注意:如果文件没有写权限,rm 会提示你并拒绝删除。
示例 2:强制删除文件 (-f)
当你确定要删除一个文件,并且不想看到任何错误提示或权限确认时,使用 -f 选项。
# 即使文件没有写权限或不存在,也强制删除,不报错 rm -f file1.txt
示例 3:交互式删除 (-i)
这是一个非常安全的选项,rm 会在删除每个文件前都询问你是否真的要删除。
$ rm -i file1.txt rm: remove regular empty file 'file1.txt'? y # 输入 y 确认,n 取消
重要提示:很多 Linux 发行版(如 Ubuntu)默认将 rm 命令设置成了 rm -i 的别名(alias),意味着即使你只输入 rm,它也会以交互模式运行,你可以使用 alias 命令来查看:

$ alias rm alias rm='rm -i'
如果你想去掉这个别名,可以执行 unalias rm。
示例 4:删除目录 (-r 或 -R)
rm 默认不能删除目录,要删除一个目录及其内部所有内容,必须使用 -r(或 -R,recursive 的缩写)选项。
# 递归删除 my_dir 目录及其所有子文件和子目录 rm -r my_dir
执行此命令后,终端会进入交互模式,逐个询问你是否要删除每个文件和目录,直到你确认或取消。
示例 5:强制递归删除目录 (-rf)
这是系统管理员和开发者最常用,也是最危险的组合之一,它会强制、静默、递归地删除一个目录及其所有内容,没有任何提示。
# 强制递归删除 my_dir 目录,不进行任何确认 rm -rf my_dir
⚠️ 安全警告: rm -rf 是一把双刃剑,如果误用,可能会造成灾难性后果,
# 错误的命令,会清空整个系统! # rm -rf / # 或者更隐蔽的错误 # rm -rf /some/path/* # /some/path/ 意外为空,会变成 rm -rf /
请务必在执行 rm -rf 之前,反复检查你的路径是否正确!
示例 6:只删除空目录 (-d)
如果你只想删除一个空目录,可以使用 -d 选项,如果目录不为空,则会报错。
# 删除一个名为 empty_dir 的空目录 rm -d empty_dir # 如果目录不为空,会报错 rm -d non_empty_dir rm: cannot remove 'non_empty_dir': Directory not empty
示例 7:结合使用 -r 和 -v
-v (verbose) 选项会打印出正在删除的文件名,让你清楚地看到 rm 的执行过程,这在处理大量文件时非常有用。
$ rm -rv my_dir removed 'my_dir/file1.log' removed 'my_dir/file2.log' removed directory 'my_dir'
示例 8:结合使用 -r 和 -i
当你不确定一个目录里有什么,但又想安全地删除它时,可以使用 -ri 组合,它会先递归列出所有要删除的文件,然后在删除每个文件前询问你。
$ rm -ri my_dir rm: descend into directory 'my_dir'? y rm: remove regular empty file 'my_dir/file1'? y rm: remove regular empty file 'my_dir/file2'? n # 在这里选择取消删除 file2 rm: remove directory 'my_dir'? y
安全替代方案
因为 rm 的破坏性太强,很多人更喜欢使用更安全的替代工具,trash-cli。
使用 trash-cli (推荐)
trash-cli 提供了一个类似回收站的功能,它不会真正删除文件,而是将文件移动到一个特殊的“回收站”目录中,直到你手动清空回收站。
安装 trash-cli
# 对于 Debian/Ubuntu 系统 sudo apt-get install trash-cli # 对于 CentOS/RHEL/Fedora 系统 sudo yum install trash-cli
使用 trash 命令代替 rm
# 将文件 "file1.txt" 移动到回收站 trash file1.txt # 删除一个目录 trash my_dir
查看回收站内容
$ trash-list 2025-10-27 10:30:00 /home/user/file1.txt 2025-10-27 10:31:00 /home/user/my_dir
清空回收站(永久删除)
$ trash-empty
恢复文件
# 恢复 file1.txt $ trash-restore file1.txt
| 命令 | 行为 | 安全性 | 适用场景 |
|---|---|---|---|
rm file |
删除文件 | 中等 | 删除普通文件 |
rm -f file |
强制删除文件 | 低 | 确定要删除,不想看到提示 |
rm -r dir |
递归删除目录(带交互) | 高 | 安全地删除一个目录 |
rm -rf dir |
强制递归删除目录 | 极低 | 批量删除、脚本中(极其危险) |
rm -d dir |
只删除空目录 | 高 | 清理空目录 |
trash file |
移动到回收站 | 极高 | 日常文件管理,防止误删 |
核心建议:
- 养成好习惯:在不确定时,使用
-i选项或trash-cli。 - 绝对小心:在执行
rm -rf前,再三确认路径。 - 使用别名:可以在你的
~/.bashrc或~/.zshrc文件中设置一个更安全的rm别名,alias rm='rm -i'。 - 考虑回收站:对于日常工作,安装并使用
trash-cli是一个非常好的习惯。
