曾几何时,一条 rm -rf /useless /*
命令干掉了我们需要的文件,也干掉的整个系统,
这是是不是与哭无泪啊。
像这种使用 rm
命令误删除文件的情况,我们会注意,但是我们不能保证百分百的不会
出现这种情况,毕竟事情总有偶然,那么对于这种情况我们是不是就束缚无策呢,不!我们有相应
的解决办法,那就是使用 trash-cli。trash-cli是一个使用 python 开发的软件包,包含 trash-put
、
restore-trash
、trash-list
、trash-empty
、trash-rm
等命令,我们可以通过这写命令,将文件移动到回收站,或者还原
删除了的文件。
trash-put
命令会把我们想要删除的文件移动到 ~/.local/share/Trash/files 中,相关信息记录在
~/.local/share/Trash/info 中。
现在我们来安装 trash-cli
加入我们使用 CentOS,Fedora,Ubuntu等主流操作系统,我们可以直接使用软件包管理命令安装如
sudo yum install -y trash-cli sudo apt-get install -y trash-cli
对于其他系统,或者是我们想亲自动手安装最新的 trash-cli我们可以通过一下步骤安装:
我们可以在一下地址找到 trash-cli
https://github.com/andreafrancia/trash-cli
我们使用 git 克隆出来,或者直接下载压缩包,我们这里直接下载,文件存为 trash-cli-master.tar.gz
tar xf trash-cli-master.tar.gz cd trash-cli-master sudo python setup.py install
因为和 rm
命令接口是兼容的,所以,可以使用 trash-put
代替 rm
,
trash-cli 在删除文件时会记录文件的原始路径、删除时间和文件权限,并且兼容
GNOME和 KDE的 trash实现。同时也实现了 FreeDesktop.org Trash Specification
也支持除 home文件系统意外的其他文件系统和文件分区以及移动设备分区
安装完毕之后我们可以通过一些配置,用它替代 rm
命令
我们在 ~/.bashrc 文件中间加入
alias rm=”trush-put”
命令概览:
trash-put //将文件或目录移入回收站 trash-empty //清空回收站 trash-list // 列出回收站中的文件 restore-trash //还原回收站中的文件 trash-rm // 删除回首站中的单个文件
Usage
Trash a file:
$ trash-put foo
List trashed files:
$ trash-list 2008-06-01 10:30:48 /home/andrea/bar 2008-06-02 21:50:41 /home/andrea/bar 2008-06-23 21:50:49 /home/andrea/foo
Search for a file in the trashcan:
$ trash-list | grep foo 2007-08-30 12:36:00 /home/andrea/foo 2007-08-30 12:39:41 /home/andrea/foo
Restore a trashed file:
$ trash-restore 0 2007-08-30 12:36:00 /home/andrea/foo 1 2007-08-30 12:39:41 /home/andrea/bar 2 2007-08-30 12:39:41 /home/andrea/bar2 3 2007-08-30 12:39:41 /home/andrea/foo2 4 2007-08-30 12:39:41 /home/andrea/foo What file to restore [0..4]: 4 $ ls foo foo
Remove all files from the trashcan:
$ trash-empty
Remove only the files that have been deleted before <days> ago:
$ trash-empty <days>
Example:
$ date Tue Feb 19 20:26:52 CET 2008 $ trash-list 2008-02-19 20:11:34 /home/einar/today 2008-02-18 20:11:34 /home/einar/yesterday 2008-02-10 20:11:34 /home/einar/last_week $ trash-empty 7 $ trash-list 2008-02-19 20:11:34 /home/einar/today 2008-02-18 20:11:34 /home/einar/yesterday $ trash-empty 1 $ trash-list 2008-02-19 20:11:34 /home/einar/today
To remove only files matching a pattern:
$ trash-rm \*.o
Note: you need to use quotes in order to protect pattern from shell expansion.