做什么

删除文件或目录。Linux 没有回收站,删了就没了

常用参数

参数 含义
-r / -R 递归删除目录
-f 强制(不问 + 不报错文件不存在)
-i 每个文件问一次
-I 删 3 个以上 / 递归时问一次
-v 显示过程
-d 删空目录(等同 rmdir)

实战

rm file.txt
rm *.tmp                      # 通配符
rm -r folder                  # 删目录
rm -rf folder                 # 强制递归(小心)
rm -i *.txt                   # 每个问一次
rm -I *.txt                   # 全部问一次(友好)

⚠ 终极灾难

rm -rf /               # 删整个系统(多数 rm 现在拒绝 / 加 --no-preserve-root 才行)
rm -rf $UNSET_VAR/*    # 变量未定义 → rm -rf /*  → 灾难

永远在跑 rm -rf 前看清路径。建议:

# 1. 先 ls 确认
ls /path/to/delete

# 2. 用 set -u 防止变量未定义
set -u
rm -rf "$dir"/*       # $dir 没定义会报错而不是删根

# 3. 给 root 加保护
alias rm='rm -I --preserve-root'

找回?

ext4 / xfs 都没有"恢复站" — 真删了就要靠:

  • 备份(必须有)
  • 文件系统级 undelete 工具(如 extundelete)—— 但只能在没继续写的情况下
  • 商业数据恢复(贵 + 不一定行)

最佳防御 = 备份。生产数据库 + 重要目录 = 每天异地备份。