linux中使用rm命令將文件移到回收站的方法


今天在終端下,看到我的用戶目錄下有個~的文件夾(maven生成),相要刪除收回點空間,習慣性的用命令 rm -rf ~ ,一回車,猛然想起的時候已經來不及了,世界一下子清靜了,想死的心都有了!

沒錯,~指定的是當前用戶的目錄,我的用戶名是liyd,相當於是執行了rm -rf /home/liyd,所有的文件都刪除了。試了linux下的各種文件恢復方法,都不理想,ext4格式,找回來的比率太小了,還要在一大堆亂文件中查找需要的,唉!所幸沒什么特別重要的文件,代碼都git和svn提交了,損失還能接受。

這次是~,下次要是誤敲個其它的說不定會更杯具,經過這個教訓,想着能不能有方法將rm命令刪除的文件先放到回收站呢,留點誤刪后悔的余地,網上一查,還真有。

看了下,基本上是偷換了概念,把rm命令轉換成了mv命令,但是能夠達到我想要的效果,只不過在習慣性的敲入-r 參數時會報出一個錯誤,因為mv命令沒有-r參數嘛,下面是方法:

原理是在用戶主目錄下創建一個隱藏文件夾~/.trash作為垃圾回收站。

代碼如下:

mkdir -p ~/.trash 
vi ~/.bashrc


然后把以下代碼寫入~/.bashrc后,保存一下。

代碼如下:

alias rm='trash' 
alias rl='trashlist' 
alias ur='undelfile' 
#替換rm指令移動文件到~/.trash/中 
trash() 

mv $@ ~/.trash/ 

#顯示回收站中垃圾清單 
trashlist() 

echo -e "33[32m==== Garbage Lists in ~/.trash/ ====33[0m" 
echo -e "\a33[33m----Usage------33[0m" 
echo -e "\a33[33m-1- Use 'cleartrash' to clear all garbages in ~/.trash!!!33[0m" 
echo -e "\a33[33m-2- Use 'ur' to mv the file in garbages to current dir!!!33[0m" 
ls -al ~/.trash 

#找回回收站相應文件 
undelfile() 

mv -i ~/.trash/$@ ./ 

#清空回收站 
cleartrash() 

echo -ne "\a33[33m!!!Clear all garbages in ~/.trash, Sure?[y/n]33[0m" 
read confirm 
if [ $confirm == 'y' -o $confirm == 'Y' ] ;then 
/bin/rm -rf ~/.trash/* 
/bin/rm -rf ~/.trash/.* 2>/dev/null 
fi 
}


在命令行下面刷新一下環境配置,即可生效:

代碼如下:

source ~/.bashrc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM