Linux OS下替換rm
為mv
, 防止文件誤刪
Linux下command操作环鲤,一個(gè)迷糊就可能遇到刪庫跑路的可能,比如殺手rm -fr *
, 這里提供一種方法替換Linux下的rm
為mv
, 實(shí)現(xiàn)刪除文件備份的功能
操作方法
在/root/.bashrc
中添加如下內(nèi)容
function rm_mv(){
curr_date=$(date +%Y_%m_%d)
resp=""
if [ ! -e /tmp/${curr_date} ];then
mkdir -p /tmp/${curr_date}
fi
if echo $1 | grep -q ^'-';then
echo "Will delete those file : ?[31m$(echo $@ | cut -d ' ' -f 2-)?[0m forcely !"
resp="y"
else
read -p "Will delete those file : ?[31m$@?[0m, right ? [Y|y]|[N|n] > " resp
fi
case ${resp} in
"Y"|"y")
true
;;
*)
return
;;
esac
if echo $1 | grep -q ^'-';then
file_num=$(echo $@ | cut -d ' ' -f 2- | wc -w)
flag=0
for file in $(echo $@ | cut -d ' ' -f 2-)
do
if [ -e /tmp/${curr_date}/${file} ];then
mv -f ${file} /tmp/${curr_date}/${file}_$(date +%s)
if [ $? -eq 0 ];then
let flag+=1
fi
else
mv -f ${file} /tmp/${curr_date}
if [ $? -eq 0 ];then
let flag+=1
fi
fi
done
else
file_num=$(echo $@ | wc -w)
flag=0
for file in $(echo $@)
do
if [ -e /tmp/${curr_date}/${file} ];then
mv -f ${file} /tmp/${curr_date}/${file}_$(date +%s)
if [ $? -eq 0 ];then
let flag+=1
fi
else
mv -f ${file} /tmp/${curr_date}
if [ $? -eq 0 ];then
let flag+=1
fi
fi
done
fi
if [ ${flag} -eq ${file_num} ];then
echo "?[32mSuccessfully?[0m !"
else
echo "?[31mBUG - Unsuccessfully, [${flag}/${file_num} finished !]?[0m !"
fi
}
alias rm='rm_mv'
定義一個(gè)新的函數(shù)alias
到原來的系統(tǒng)命令rm
碳柱。當(dāng)執(zhí)行rm
文件的時(shí)候會提示用戶確認(rèn)刪除藤滥,刪除成功會有返回梗搅。同時(shí)rm -fr
還是可以用的蠢络,只是不會提示用戶確認(rèn)拷恨。遇到刪除相同的文件名的時(shí)候,會在文件名后+日期備份谢肾。每天會按照日期在/tmp下生成備份文件夾。
注意小泉,由于markdown無法正確地顯示部分字符code中的●
是CTRL+v+ESC組合鍵出來的, UTF-8是<0x1b>
推薦關(guān)注博主公眾號芦疏,獲取最新的文章??
??轉(zhuǎn)載請注明來源,版權(quán)歸作者@hualong1009所有, 謝謝