1. 程式人生 > >修改rm命令防止誤刪

修改rm命令防止誤刪

   相信很多使用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