trash-cli 实战教程:5 个命令构建你的 Linux 命令行回收站
trash-cli 实战教程5 个命令构建你的 Linux 命令行回收站【免费下载链接】trash-cliCommand line interface to the freedesktop.org trashcan.项目地址: https://gitcode.com/gh_mirrors/tr/trash-cli你有没有过这样的经历一条rm -rf敲下去几 GB 的重要文件瞬间灰飞烟灭连后悔的机会都没有在 Linux 终端里trash-cli 就是专为这类场景诞生的「命令行回收站」。trash-cli 是 freedesktop.org 回收站规范的官方命令行接口兼容 KDE、GNOME、XFCE 等桌面环境的回收站让你在终端中也能安全删除文件并在任何时候轻松找回。本文用 5 个核心命令 若干实战技巧带你从零上手彻底告别「误删即丢失」。为什么你需要一个命令行回收站rm与 trash-cli 的核心区别在于「删除是否可逆」。rm直接清掉磁盘上的数据块trash-cli 则把文件搬进回收站目录并留下一份记录原始位置与删除时间的元数据随时可以原路恢复。对比维度rmtrash-cli删除结果永久删除不可恢复移入回收站可随时恢复原始路径记录无自动记录恢复时原路放回桌面回收站兼容不兼容与图形界面回收站完全互通批量/定时操作需自行组合脚本内置天数过滤、模式匹配对系统管理员和开发者而言trash-cli 的价值有三点一是安全兜底误删后仍有后悔药二是桌面生态互通终端删的文件在文件管理器里同样可见三是易于脚本化配合 cron 可实现自动清理。两步上手2 分钟跑通你的第一次安全删除安装与使用都非常简单推荐通过 pip 安装pip install trash-cli装好后用一个测试文件验证效果echo hello test.txt trash-put test.txt运行后你将看到类似输出test.txt trashed in ~/.local/share/Trash此时test.txt已经从当前目录消失但它并没有被销毁而是被安全地移入了回收站。现在试着用trash-list查看一下2026-08-14 10:30:15 /home/yourname/test.txt输出第一列是删除时间第二列是该文件被删除前的完整原始路径。至此你的命令行回收站已经跑通了。先看原理回收站里到底发生了什么理解了内部机制后续所有命令的行为都会变得顺理成章。执行trash-put后工具会做两件事把文件移动到回收站目录files/下通常位于~/.local/share/Trash/files/在info/目录下生成一个同名的.trashinfo元数据文件记录删除前的原始路径与删除时间。这两个动作保证了两件事文件本体安全存放、原始位置信息不丢失。trash-list负责读取并展示这些信息trash-restore则依据元数据把文件搬回原处trash-empty与trash-rm负责反向清理。五条命令各司其职组成一个完整的「存、查、取、清」闭环。场景一安全删除文件用 trash-puttrash-put 是这套工具链的入口任何「想删但怕删错」的操作都应交给它。删除单个文件trash-put report.pdf批量删除trash-put *.log trash-put build/ dist/几个值得注意的细节对目录同样生效会整棵子树移入回收站重复删除同名文件时会自动追加序号避免覆盖如果回收站所在分区与文件不在同一分区工具会优先选择文件所在分区的回收站目录避免跨设备移动失败。场景二查看回收站内容用 trash-listtrash-list 默认列出所有回收站文件按删除时间与原始路径输出trash-list输出示例2026-08-14 10:30:15 /home/yourname/test.txt 2026-08-01 09:12:44 /home/yourname/old_backup.tar.gz如果想看文件在回收站里的实际存放位置可以加--show-files输出会追加一列-指向备份副本路径。需要显示文件大小时使用--size首列会变为文件体积。配合管道即可实现检索trash-list | grep backup这条组合命令在回收站文件很多时非常实用能快速定位目标。场景三恢复误删文件用 trash-restoretrash-restore 是整套工具的「后悔药」采用交互式操作trash-restore它首先会列出当前目录下被删除过的文件0 2026-08-14 10:30:15 /home/yourname/test.txt 1 2026-08-01 09:12:44 /home/yourname/old_backup.tar.gz What file to restore [0..1]:在提示符后输入序号即可恢复对应文件。它还支持一次性恢复多个输入0,1恢复 0 号和 1 号输入0-1恢复区间内的全部文件两者也可以混用例如0,2-3。恢复时若目标位置已存在同名文件工具会拒绝覆盖并给出提示避免意外覆盖。如果什么都不想恢复直接回车退出即可。场景四定时清理回收站用 trash-empty回收站不能只进不出trash-empty 负责按时间清理# 清空整个回收站 trash-empty # 只删除 30 天前的文件 trash-empty 30trash-empty 30会依据 .trashinfo 中的删除时间筛选仅清理超过 30 天的文件这是最常用的运维姿势。几个高频参数-f跳过交互确认适合脚本调用--dry-run预演模式只列出将被删除的文件而不真正删除-v详细输出配合--dry-run可提前检查清理范围--all-users清理系统内所有用户的回收站需要相应权限。场景五选择性删除用 trash-rm如果只想删掉回收站里符合某种模式的文件用 trash-rm 更精准。它使用fnmatch通配符匹配文件名# 删除回收站中所有 .o 文件 trash-rm *.o # 删除回收站中所有 .tmp 文件 trash-rm *.tmp注意模式需要加引号避免被 shell 提前展开。它只影响回收站内的文件绝不会触碰当前工作目录下的同名文件安全性有保障。进阶实战3 个工程化组合技巧技巧一用 alias 给 rm 加一道保险。在你的 shell 配置中加入alias rmecho 请使用 trash-put 安全删除; false从此敲错rm也会被拦下提醒强制养成安全删除的习惯。技巧二crontab 自动清理过期文件。将下面一行加入 crontab即可每天自动删除回收站中超过 30 天的文件(crontab -l ; echo daily $(which trash-empty) 30 -f) | crontab --f保证无人值守时不会卡在交互确认上。技巧三脚本中先查后删。在自动化脚本里先用 trash-list 确认待删目标再决定是否调用 trash-empty形成「先审计、后清理」的稳妥流程trash-list | grep temp trash-empty 0配合 grep、awk 等标准管道工具trash-cli 可以无缝嵌入你已有的脚本体系。源码导读5 个命令背后的核心模块想深入了解实现细节可以按下面路径阅读源码trashcli/put/main.pytrash-put 主入口负责组装文件系统、时钟、日志等依赖trashcli/list/list_trash_action.pytrash-list 核心动作扫描回收站目录并解析 .trashinfotrashcli/restore/restore_asking_the_user.pytrash-restore 的交互逻辑负责解析序号与区间输入trashcli/empty/parser.pytrash-empty 的参数解析器定义天数、交互、预演等选项。项目同时提供了完整的man/man1/手册页与docs/文档目录命令细节与设计讨论均可查阅建议以官方文档为准。常见问题解答Qtrash-put 和 rm 到底有什么区别Atrash-put 把文件移入回收站并记录原始路径可随时恢复rm 直接释放数据块删除即永久丢失。Q恢复文件时提示拒绝覆盖怎么办A说明目标位置已存在同名文件trash-restore 出于安全默认拒绝覆盖可先移动或重命名现有文件后再恢复。Qtrash-empty 30 和 trash-empty 有什么区别A前者只清理删除时间超过 30 天的文件后者清空整个回收站使用前务必确认。Qtrash-rm 的匹配规则是什么A使用 Python 的fnmatch通配符*匹配任意字符模式需加引号防止 shell 展开。Q终端删除的文件能在桌面回收站看到吗A可以。trash-cli 遵循 freedesktop.org 规范写入的是标准回收站目录与图形界面完全互通。总结与下一步回顾一下trash-cli 为你带来了五件武器trash-put 安全删除、trash-list 随时查看、trash-restore 一键恢复、trash-empty 定时清理、trash-rm 精准移除。✅ 与桌面回收站完全兼容终端图形双端互通✅ 原始路径自动记录恢复零成本✅ 天然支持批量与定时场景脚本友好✅ 安装简单一个 pip 命令即可上手。现在就去安装一个用trash-put替换掉你手上危险的rm从此告别数据误删的焦虑。【免费下载链接】trash-cliCommand line interface to the freedesktop.org trashcan.项目地址: https://gitcode.com/gh_mirrors/tr/trash-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考