更改rm命令为移动到回收站

2013年04月02日

前两天很悲愤的是用命令rm不小心将刚改好的代码全部删除了,顿时那叫一个悔啊,干嘛手要那么快!!!

诚然,Linux的哲学假定用户知道自己在干什么,能为自己的行为负责。可是我真不是想要删除啊!幸亏使用了版本控制,不至于将所有代码历史丢失,但是这个问题还是需要解决。

在网上初略搜索了一下,Ubuntu的回收站位于~/.local/share/Trash/,而各个分卷下的回收站位置为该分卷根下.Trash-1000/文件夹中。很多帖子提到通过将文件使用mv命令移动到Trash文件夹从而实现删除到回收站,为了方便还可以使用重命令:

alias rm='mv --target-directory=$HOME/.local/share/Trash/files'

但是这样有一个很大的弊病就是删除的文件可能会覆盖掉以前回收站中已有的同名文件,同时还不能记录文件删除的时间,权限等。实际上,Trash文件夹下info子文件夹中存放了回收站中文件的删除前位置,删除时间等信息。

本想自己写个脚本来实现写info文件来着,上网一查才发现早就有人写好了包了,实现了命令行端的回收站功能,强大的apt安装:

sudo apt-get install trash-cli

此包以python写成,提供命令trash-list(列出回收站文件), restore-trash(恢复文件,此命令挺奇怪,为什么要倒过来写?), trash-empty(清空回收站), trash-put(删除到回收站)。

为了使用方便可以在bashrc文件下加入命令重定义:

alias rm='trash-put'
alias rM='/bin/rm'

这样,再使用rm删除文件时就是将文件删除到回收站了。

为了方便,还可以装另外一个自动清除回收站的包autotrash:

sudo apt-get install autotrash

关于此包的介绍可见ubuntu定时清空回收站:Autotrash