線上書籍

Home

網管技術

http://www.cnblogs.com/edwardcmh/archive/2013/05/31/3110870.html

為rm增加回收站功能&用trash-cli避免誤刪Linux文件

我的上篇博文提到用extundelete恢復在Linux中誤刪的文件,本著防範於未然的態度,最好為rm找一劑後悔藥,trash-cli可以完美滿足這個需求。

廢話不多說,使用yum install直接安裝trash-cli,但是RHEL提示沒有這個包,索性直接去github下載trash-cli的源代碼安裝:

1

2

3

[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加入:

1

2

3

alias rm!="/bin/rm -vi"

alias rm=trash

alias lstrash=trash-list

trash和trash-put貌似是一樣的,因此用哪個關聯rm都行,如果不經過回收站直接刪除文件輸入rm!命令就可以了,lstrash是為了方便列出回收站中的文件,每個文件都有刪除日期和原路徑,並且完全兼容圖形界面的回收站。trash-cli中的所有命令:

1

2

3

4

5

6

7

[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中的回收站路徑:

1

$HOME/.local/share/Trash

其中files目錄保存已刪除的文件,info目錄保存已刪除文件的信息。

ps:卸載python安裝的軟件包:

1

2

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

參考資料(感謝原作者分享):

1、如何使用trash-cli逃出rm命令誤刪除重要文件的陰影

2、為rm命令增加回收站功能