今天在終端下,看到我的用戶目錄下有個~的文件夾(maven生成),相要刪除收回點(diǎn)空間,習(xí)慣性的用命令 rm -rf ~ ,一回車,猛然想起的時候已經(jīng)來不及了,世界一下子清靜了,想死的心都有了!
沒錯,~指定的是當(dāng)前用戶的目錄,我的用戶名是liyd,相當(dāng)于是執(zhí)行了rm -rf /home/liyd,所有的文件都刪除了。試了linux下的各種文件恢復(fù)方法,都不理想,ext4格式,找回來的比率太小了,還要在一大堆亂文件中查找需要的,唉!所幸沒什么特別重要的文件,代碼都git和svn提交了,損失還能接受。
這次是~,下次要是誤敲個其它的說不定會更杯具,經(jīng)過這個教訓(xùn),想著能不能有方法將rm命令刪除的文件先放到回收站呢,留點(diǎn)誤刪后悔的余地,網(wǎng)上一查,還真有。
看了下,基本上是偷換了概念,把rm命令轉(zhuǎn)換成了mv命令,但是能夠達(dá)到我想要的效果,只不過在習(xí)慣性的敲入-r 參數(shù)時會報出一個錯誤,因?yàn)閙v命令沒有-r參數(shù)嘛,下面是方法:
原理是在用戶主目錄下創(chuàng)建一個隱藏文件夾~/.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
}
#找回回收站相應(yīng)文件
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
}
在命令行下面刷新一下環(huán)境配置,即可生效:
source ~/.bashrc