菜鸟科技网

Linux remove命令如何彻底删除文件或目录?

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

Linux remove命令如何彻底删除文件或目录?-图1
(图片来源网络,侵删)

命令简介

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 最简单的用法,直接删除一个或多个文件。

Linux remove命令如何彻底删除文件或目录?-图2
(图片来源网络,侵删)
# 删除单个文件
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 命令来查看:

Linux remove命令如何彻底删除文件或目录?-图3
(图片来源网络,侵删)
$ 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 移动到回收站 极高 日常文件管理,防止误删

核心建议:

  1. 养成好习惯:在不确定时,使用 -i 选项或 trash-cli
  2. 绝对小心:在执行 rm -rf 前,再三确认路径
  3. 使用别名:可以在你的 ~/.bashrc~/.zshrc 文件中设置一个更安全的 rm 别名,alias rm='rm -i'
  4. 考虑回收站:对于日常工作,安装并使用 trash-cli 是一个非常好的习惯。
分享:
扫描分享到社交APP
上一篇
下一篇