避免rm的巨大傷害,使刪除的東西在回收站

1.原因:

    今天測試時不小心把家目錄裏的好多東西刪掉了,辛虧有備份,寫好的好多腳本纔沒有丟

    本來定義的有別名 

    alias rm="mv -t /app/tmp"        
       -t :調換 源 和 目的 的參數位置

     可是在腳本里執行的rm 不支持別名,就刪錯了

2.思路:

    1. 寫一個腳本,名字是 rm ,把路徑放在PATH的最前面

            把 /app/tmp 當作是回收站

    2. 刪除 alias rm=“rm -i”


3.過程

      1. 腳本

#!/bin/bash
# ------------------------------------------
# Filename: rm   
# Date:    2017-09-15    
# Revision:   
# Author: 木子甘
# stdentID:16    
# Description: 避免rm的巨大傷害,使刪除的東西在回收站 
# ------------------------------------------
#檢查有沒有參數
f_args (){
        [ $# -eq 0 ] &&{ echo "missing operand" ; return 1; } || return 0 
}
#檢查文件是否存在
f_arg (){
        [ -e $1 ] ||{ echo "cannot remove ‘b.sh’: No such file or directory"; return 1; }
}
#mv
f_rm (){
        mv -t /app/tmp $1
}
#主程序
f_args $@ 
[ $? -ne 0 ] &&exit 1
while [ $# -ne 0 ] ; do
        f_arg $1 
        [ $? -ne 0 ] &&{ shift; continue; }
        f_rm $1
        [ $? -ne 0 ] &&{ shift; continue; }
        shift
done



    2.    修改PATH變量

        在/etc/profile.d/newvar.sh 裏面寫上

            PATH=$HOME/bin:$PATH


4.測試

    1.

[root@localhost ~/bin]# vim test.sh
#!/bin/bash
which rm
bash -x rm /app/tmp/a.sh


          結果是:wKioL1m848rRW_ekAABt0KCkBYI924.png-wh_50


    2.命令行測試

[root@localhost ~/bin]# which rm
/root/bin/rm


成功!!!


















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章