Linux OS下替换rm
为mv
, 防止文件误删
Linux下command操作,一个迷糊就可能遇到删库跑路的可能,比如杀手rm -fr *
, 这里提供一种方法替换Linux下的rm
为mv
, 实现删除文件备份的功能
操作方法
在/root/.bashrc
中添加如下内容
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'
定义一个新的函数alias
到原来的系统命令rm
。当执行rm
文件的时候会提示用户确认删除,删除成功会有返回。同时rm -fr
还是可以用的,只是不会提示用户确认。遇到删除相同的文件名的时候,会在文件名后+日期备份。每天会按照日期在/tmp下生成备份文件夹。
注意,由于markdown无法正确地显示部分字符code中的●
是CTRL+v+ESC组合键出来的, UTF-8是<0x1b>
推荐关注博主公众号,获取最新的文章😀
服务器测试与运维📌转载请注明来源,版权归作者@hualong1009所有, 谢谢
网友评论