我的上篇博文提到用extundelete恢复在Linux中误删的文件,本着防范于未然的态度,最好为rm找一剂后悔药,trash-cli可以完美满足这个需求。
废话不多说,使用yum install直接安装trash-cli,但是RHEL提示没有这个包,索性直接去github下载trash-cli的源代码安装:
[root@bogon edward]# unzip trash-cli-master.zip [root@bogon edward]# cd trash-cli-master/ [root@bogon edward]# python setup.py install --record install.txt
安装很简单,不过trash-cli需要依赖python包,RHEL默认安装时自带了,如果没有的话用yum install python*安装就行了。虽然可以直接用命令行python setup.py install进行安装,但是setup.py没有uninstall选项,无法直接卸载,于是将安装中创建的文件记录在install.txt中,今后如果需要删除的话也会方便很多。
trash-cli安装完成后可以直接使用trash-put将文件放入回收站,为了兼容使用习惯,用shell脚本改写rm命令为trash-put就行了,编辑.bashrc加入:
alias rm!="/bin/rm -vi" alias rm=trash alias lstrash=trash-list
trash和trash-put貌似是一样的,因此用哪个关联rm都行,如果不经过回收站直接删除文件输入rm!命令就可以了,lstrash是为了方便列出回收站中的文件,每个文件都有删除日期和原路径,并且完全兼容图形界面的回收站。trash-cli中的所有命令:
[root@bogon bin]# ll | grep trash -rwxr-xr-x 1 root root 127 5月 31 15:54 restore-trash -rwxr-xr-x 1 root root 123 5月 31 15:54 trash -rwxr-xr-x 1 root root 125 5月 31 15:54 trash-empty -rwxr-xr-x 1 root root 124 5月 31 15:54 trash-list -rwxr-xr-x 1 root root 123 5月 31 15:54 trash-put -rwxr-xr-x 1 root root 122 5月 31 15:54 trash-rm
经过测试,trash支持递归删除目录,也就是实现rm -r的功能。使用restore-trash恢复回收站文件,终端会显示出回收站中的文件和编号,输入要还原的文件编号即可恢复,使用trash-empty清空回收站文件,无提示直接清空。命令说明可以使用参数--help查看。
ps:RHEL6中的回收站路径:
$HOME/.local/share/Trash
其中files目录保存已删除的文件,info目录保存已删除文件的信息。
ps:卸载python安装的软件包:
python setup.py install --record install.txt # 安装时 cat install.txt | xargs rm -rf # 卸载时
务必在程序源代码目录保留install.txt文件,才能使用上述命令卸载。
google还找出了一个作者编写用于Mac OS X上取代rm的脚本:原文链接
项目主页:https://gitcafe.com/bachue/rm-trash
参考资料(感谢原作者分享):