优化Linux误删除方法
linux防止误删文件,延迟实际删除时间
#vim /root/.rm.sh
#vim /root/.rm.sh
#!/bin/bash
TRASH_DIR=$HOME/.TRASH_DIR
[ ! -d ${TRASH_DIR} ] && mkdir -p ${TRASH_DIR}
function fun_del()
{
#删除三天以前的文件
DATE=`date +%F -d '-3day' |awk -F- '{print $NF}'`
#awk -v 引入日期变量
files=`ls ${TRASH_DIR}/ | awk -v DATE=$DATE -F'[-_]' '$(NF-1)<DATE {print $0}'`
for i in $files;
do
/bin/rm -rf ${TRASH_DIR}/$i
done
}
fun_del
function fun_mv()
{
DATE=$(date +%F_%T)
fileName=$(basename $i)
if [ -f $i ];then
mv ${i} ${TRASH_DIR}/${fileName}.${DATE}
# echo 已删除文件 $i
elif [ -d $i ]; then
mv ${i} ${TRASH_DIR}/${fileName}.${DATE}
# echo 已删除目录 $i
else
echo $i 不存在
fi
}
#以下-r -f -rf为避免习惯性敲出参数,报出异常
case $1 in
-[a-zA-Z]*)
# echo 参数以 - 开头,$1 为参数
case $1 in
-f | -r | -rf )
if [ -z $2 ];then
echo 缺少待删文件
exit
else
for i in ${@:2}; # 取第二个参数及以后的值
do
fun_mv $i
done
fi
;;
*)
echo 参数错误: $1 参数应为 -f -r -rf
echo Try '/bin/rm --help' for more information.
exit
;;
esac
exit
esac
# echo 参数不是以 - 开头,$1 为待删文件
for i in $*;
do
if [ -d $i ];then
echo 存在目录,请使用参数 -f -r -rf
exit
else
fun_mv $i
fi
done
配置root用户使用的mv命令别名
#vim .bashrc
alias rm='bash /root/.rm.sh'
source /root/.bashrc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)