由于目前大家使用的Linux文件系統大多是Ext3格式的,文件一旦刪除,很可能無法恢復,即便可以恢復也十分麻煩。所以執行rm命令變得異常危險,為此,我們可以編寫兩個Shell腳本來實現安全刪除和恢復文件的功能。
原理很簡單,在當前用戶的家目錄下創建一個隱藏文件夾“.temp”,它相當于Windows系統中的回收站。當我們想安全刪除一個文件時,將要刪除的文件剪切到該目錄下即可。如果想要恢復,再將“.temp”目錄內的文件剪切到原始位置便是。
刪除文件的Shell腳本我們命名為erase,代碼如下:
#! /bin/bash
RecycleBin=~/.temp
(($#==0)) && { echo "No paraments!";exit 1; }
if [ ! -d $RecycleBin ]; then
mkdir $RecycleBin
fi
for i in $*
do
if test -e $i
then
cd $(dirname $i)
mv -f $(basename $i) $RecycleBin/$(find $(pwd) -maxdepth 1 -name $(basename $i) | tr "/" "=")
cd -
else
echo "$i:No such file or directory!"
fi
done
恢復文件的Shell腳本我們命名為unerase,代碼如下:
#! /bin/bash
cd ~/.temp
list=$(for i in $*; do ls |grep "\<$i\>"; done)
(($#==0)) && { list=$(ls|grep ""); }
for j in $list
do
file=$(echo $j | tr "=" "/")
mv $j ${file%/*}/${file##*/}
done
保存這兩個文件,并使用chmod命令為其添加可執行權限,然后拷貝到“/usr/bin”目錄下,之后我們就可以像使用rm命令一樣來使用erase跟unerase命令了。下圖演示了刪除test文件、恢復test文件以及“~/.temp”目錄下文件的變化。
要安全刪除某些文件,使用eares命令跟上要刪除的文件,既支持相對路徑也支持絕對路徑。要安全恢復某些文件,使用unerase命令跟上要恢復的文件名即可,如果不跟文件名,默認恢復“~/.temp”目錄下的所有文件。