rm防止誤刪除——自定義回收站

    之前小編在開發時因爲git上的操作大失敗,不停push、clone,push、clone,然後就出現了很多重名文件,一不小心就直接rm -rf了,然後就潰敗在各路文件找回的方法中。


    Disk Drill,EasyRecovery, Time Machine等等都有嘗試過,前兩者屬於是數據恢復軟件,過程比較慢而且有些操作會涉及到電腦的安全設置問題,類似讓你關閉防火牆或者設置一些你完全不懂的東東,emmmmmmm,最後下來因爲被刪除的是代碼文件夾,比較泛化所以也不好找,倒是意外的找到了不少以前沒注意到的一些pdf、word文件(可能是以前使用者留下的),但是,最坑爹的劇情出現了,如需恢復請充錢,付費版Emmmmmm。


    當然,Mac是有自帶的備份功能和Time Machine的,但是這需要外部驅動或者提前設置,完敗,最後小編也是隻能規規矩矩重新做一份當時的項目了。
    後來小編就在網友那裏得知了這個處理方法,將rm命令進行改良,設定成mv別名。
    先簡單介紹一下,這個方法相當於建立了一個回收站~/.trash,將rm的功能設定成mv,將rm的所有文件剪切至回收站內,可以設定shell設置一定時間後自動刪除,這裏也可以去裏面自己進行回收站清空

防誤刪腳本:

### 重定義rm命令 ###

# 定義回收站目錄
trash_path='~/.trash'

# 判斷 $trash_path 定義的文件是否存在,如果不存在,那麼就創建 $trash_path.
if [ ! -d $trash_path ]; then
    mkdir -p $trash_path
fi

# 定義別名:使用 rm 就調用 trash
alias rm=trash

# 使用 rl 就調用 'ls ~/.trash' 
# 如果更改上面的回收站目錄這裏的目錄也需要修改
alias rl='ls ~/.trash'

# 使用 unrm 就調用 restorefile,需要在刪除目錄的父目錄下執行
alias unrm=restorefile

# 使用 rmtrash 就調用 claearteash
alias rmtrash=cleartrash

# 恢復文件的函數
restorefile()
{
    mv -i ~/.trash/$@  ./
}
 
# 刪除文件的函數
trash()
{  
    mv $@  ~/.trash/
}
 
# 清空回收站的函數
cleartrash()
{
    read -p "確定要清空回收站嗎?[y/n]" confirm
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf  ~/.trash/*
}


    將上述腳本寫入 /etc/bashrc 並立即執行命令 source /etc/bashrc即可生效。若你的mac設置了zsh等其他配置只需要添加到相應的配置文件內重載即可。

相關指令

  1. 查看回收站下的文件——rl
  2. 恢復filename到當前目錄——unrm filename
  3. 清空回收站(會有提示)——rmtrash

問題

  • 但是過程中會有一些問題出現,比如回收站不能出現重名文件,大家可以在腳本上面做一些處理
  • 由於rm命令已經嫁接到mv上,所以原先的一些指令使用時會有影響,實在是確定了要刪除可以使用/bin/rm
  • via 如何優雅的使用rm防止誤刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章