核心功能与用法
trash-cli 是一个符合 FreeDesktop.org 规范的命令行回收站工具,为 Linux/macOS 用户提供 rm 的安全替代方案。它通过 trash-put 将文件移至系统回收站(~/.local/share/Trash/ 或挂载点的 .Trash 目录),完整记录原始路径、删除时间和权限信息,并与 KDE、GNOME、XFCE 等桌面环境的回收站互通。
五大核心命令:
trash-put:安全删除文件/目录(无需-R递归参数)trash-list:查看回收站内容,支持按用户过滤trash-restore:交互式恢复文件至原位置,支持覆盖冲突处理trash-empty [天数]:永久清理,可保留最近 N 天文件trash-rm:按模式匹配删除特定回收站文件
典型工作流:
trash-put *.log # 安全删除 trash-list | grep error # 定位文件 trash-restore # 交互式恢复
显著优点
1. 防误删保障:彻底避免 rm -rf 灾难性操作,数据可恢复
2. 跨平台兼容:支持 Homebrew、pip、apt、pacman、dnf 等多种安装方式
3. 桌面环境互通:与图形界面回收站共享存储,双向可见
4. 自动化友好:支持 --force 静默模式、管道过滤和 crontab 定时清理
5. 元数据完整:保留原始路径和时间戳,便于审计和恢复
潜在局限
- BTRFS 不支持:无法处理 Btrfs 子卷中的文件
- 只读文件系统受限:无法将只读挂载点的文件移入回收站
- 语义差异:与
rm参数行为不同(如目录处理),直接别名替换可能引发脚本问题 - 无加密擦除:仅移动文件,不涉及安全覆写,敏感数据仍可能被恢复
适用人群
- 频繁使用终端的开发者与运维人员
- 需要
rm安全替代方案的服务器管理员 - 习惯命令行但担心误删数据的 Linux/macOS 用户
- 需要自动化垃圾清理的 CI/CD 环境
使用风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 别名冲突 | 将 `rm` 别名指向 `trash-put` 可能破坏依赖 `rm -R` 行为的脚本 | 使用警告别名而非直接替换,或显式调用 `\rm` |
| 存储膨胀 | 大文件长期滞留回收站可能耗尽磁盘空间 | 配置 `trash-empty 30` 定时任务 |
| 权限问题 | 跨分区回收站需正确配置 `.Trash` 目录权限 | 按 FAQ 指导设置 sticky bit |
| 敏感数据残留 | 未加密删除,文件可被取证恢复 | 对机密数据使用 `shred` 或加密磁盘 |
安全等级评估
该工具为成熟开源项目(GitHub 星标 1.2k+),遵循标准规范,无网络通信,无提权需求,本地操作安全可控。主要风险来自用户配置不当(如强制别名替换),而非工具本身缺陷。