最简单有效的第一道防护是用 alias 给 rm 加交互提示,如 alias rm='rm -i' 或 alias rm='rm -i';推荐增强版 alias rm='rm -iv --one-file-system';拦截 rm -rf 需用函数配合别名;还可搭配 trash-cli 实现可恢复删除。

直接用 alias 给 rm 加上交互提示,是最简单有效的第一道防护。它不依赖额外工具,改完即生效,适合所有日常使用场景。
给 rm 加 -i 或 -I 参数实现删除确认
这是最基础也最实用的做法。两种参数略有区别:
-
alias rm='rm -i':每次删任意文件都弹提示,安全但略显频繁 -
alias rm='rm -I':只在删除 3 个及以上文件时才确认,兼顾效率与防护
写入 ~/.bashrc 后执行 source ~/.bashrc 生效。之后运行 rm file.txt 就会显示类似 rm: remove regular file 'file.txt'? 的确认提示。
增强版 rm:加详细输出和挂载点保护
单靠 -i/-I 还不够全面。推荐组合使用以下三个选项:
-
-I:多文件批量删除前统一确认 -
-v:每删一个都打印路径,动作可追溯 -
--one-file-system:阻止跨挂载点递归(比如在/home下执行rm -rf *不会误进/boot或/etc)
完整写法:alias rm='rm -Iv --one-file-system'。这个组合在运维环境里被广泛采用,既防手抖,也防路径理解偏差。
拦截 rm -rf 这类高危组合
普通 alias 无法覆盖带参数的命令(如 rm -rf),必须用函数+alias 配合:
- 在
~/.bashrc中定义函数:rmrf() { echo "⛔ 检测到高危操作:rm -rf"; echo "请手动确认后运行:command rm -rf \"\$@\""; } - 再设置别名映射常见误输:
alias rm-rf='rmrf'alias rm_rf='rmrf'alias 'rm -rf'='rmrf'
这样输入 rm-rf /tmp/test 就会被拦截并提示,而原生 \rm -rf 仍保留可用,兼顾安全与应急需求。
搭配 trash-cli 实现可恢复删除
如果希望彻底告别“删了就没了”,可安装 trash-cli 工具:
- Ubuntu/Debian:
sudo apt install trash-cli - CentOS/RHEL:
sudo yum install trash-cli或pip3 install trash-cli - 然后设置:
alias rm='trash'
删掉的文件进入回收站,可用 trash-list 查看、trash-restore 恢复。这对开发和测试环境特别友好。











