修改rm命令防止誤刪
阿新 • • 發佈:2018-12-27
相信很多使用Linux的同學都有過使用rm手滑誤刪資料的遭遇,我也就把寫了半個月的程式碼誤刪了而已…….,其實網路上已經有很多方法來修改rm命令,用過在.bashrc中修改rm的方法,也用過別人寫好的python包trash-cli,由於種種原因,最後都使用的不是很友好。最終決定自己寫shell來修改rm命令,原因是簡單、程式碼量少、可控性高(這個是重點)。廢話不多說,程式碼和註釋如下:
# 在當前使用者的home(最好在opt)目錄下建立.trash目錄(回收站),編輯.bashrc, 追加以下程式碼.
TRASH_DIR=/home/yxx/.trash # 設定回收站目錄路徑
alias rm=trash # 將rm命令用trash來實現
alias list_trash='ls ${TRASH_DIR}' # 顯示回收站中的檔案
trash() # 移動檔案到回收站TRASH_DIR目錄
{
for file_path in [email protected];
do
# 利用IFS分割Unix風格的檔案路徑
OLD_IFS="$IFS"
IFS="/"
array=($file_path)
IFS="$OLD_IFS"
# 在分割出的字串陣列中獲取檔名(注意冒號後有空格)
file_name=${array[@]: -1}
# 刪除檔案(將當前時間作為字尾,方便誤刪後恢復,也防止回收站中不允許同名檔案存在)
mv ${file_path} ${TRASH_DIR}/${file_name}.`date +%Y%m%d-%H:%M:%S`
done
}
clear_trash() # 清空回收站TRASH_DIR目錄下的所有檔案
{
read -p "clear sure?[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ${TRASH_DIR}/*
}
修改完後使用source ~/.bashrc
使上面的修改生效。現在使用rm命令刪除目錄和檔案時如下:
# 刪除檔案/目錄(rm的本質是mv,所以不需要-rf引數)
rm file_name
rm dir_name