trash-cli 逃离 rm -rf 阴影

trash-cli 是一个使用 Python 开发的命令行工具,实现了类似 Windows 回收站的功能,带你逃离 rm -rf 的阴影!

trash-cli 介绍

玩过 Linux 的同学都应该知道rm -rf /这个要命的命令,此命令一出,整个系统就要挂了!
就算不是误删了根目录,有时候也会不小心手抖删了某些重要的系统命令或系统配置文件,太危险了!

为了尽量避免这种情况的发生,今天向大家介绍一个实用的工具 - trash-cli,提供命令行回收站功能,以后删除的时候就有后悔药吃了。

trash-cli 安装

因为是使用 Python 开发的,因此安装非常简单,使用pip install trash-cli即可(Python 2.7 or Python 3.x),当然也可以使用 yum、pacman 等软件管理器来安装。

使用ls -l /usr/bin/trash*可查看到六个可执行文件(trash 是 trash-put 的一个别名):

  • trash-put:将文件移至回收站;
  • trash-list:查看回收站中的文件;
  • trash-restore:从回收站中找回被删的文件;
  • trash-rm:删除回收站中的单个文件;
  • trash-empty:清空回收站中的所有文件;

虽然官方 wiki 不建议将 rm 命令替换为 trash,但是为了方便,我还是忍不住:

trash-cli 用法

删除文件、文件夹
因为 trash-put 命令兼容 rm 的命令参数,因此和平时使用 rm 没有区别:
rm -rf file1 file2 dir1 dir2:删除给定文件和文件夹;
rm file1 file2 dir1 dir2:删除给定文件和文件夹,有没有 -rf 参数都一样,只是为了兼容而已;

查看回收站的文件
trash-cli 的回收站文件夹默认设置在~/.local/share/Trash/,其中的两个子文件夹:
files/:存放被删除的文件和文件夹;
info/:存放被删除的文件和文件夹的元数据(原路径、删除时间)。

不过一般我们都不直接查看这个目录,而是使用rm.list命令来查看。

如果删除的是 /tmp 目录下的文件(夹),那么它们不会被保存到家目录的回收站中,而是保存到 /tmp/.Trash-UID 目录下。

恢复被删除的文件
使用rm.restore命令,如果不指定参数,则默认列出当前路径下被删的文件(夹),然后按照提示输入序号就可以了;
如果需要恢复其它目录下的被删文件(夹),有两种方法:一是进入被删文件(夹)的父目录,然后使用rm.restore;二是使用rm.restore /path/to/来恢复被删文件(夹)。

删除回收站中的文件
删除符合条件的文件,使用rm.delete 'globbing',globbing 即 shell 通配符,需要使用引号扩起来,防止被 shell 误解析;
需要注意的是,globbing模式只能匹配文件(夹)名,不能包含路径;如果需要匹配路径,只能输入全路径名,不能使用模式匹配。

还有一个命令是rm.empty,用来批量清空回收站中的文件,它有两种用法:
1) rm.empty:清空回收站中的所有文件;
2) rm.empty days:days 为非负整数,表示清空 days 天前被删除的文件,如rm.empty 3表示清空 3 天前(含)的被删文件。