习惯root账号登陆操作,习惯使用命令rm -rf file,一次手误,使用了rm -rf ./xxx*,结果删除了不该删除的文件,虽然不是很严重的后果,但是还是有点后怕的,怕哪天一不小心rm -rf *,那就只有跑路了。。。
不使用root账号操作,偶尔别扭,所以还是自行更改rm命令吧,两个脚本,执行脚本实现rm到mv的转变
实例系统:
拷贝两文件到服务器,也就是实例的rmdev及rmdev.sh
vim rmdev
#!/bin/bash
TRASH_DIR="/tmp/userdel/${USER}/.trash"
mkdir -p $TRASH_DIR
SBRUN() {
echo -ne "\033[41;37mWhy run this command\033[0m\n"
exit 255
}
#严禁执行(笨拙代码段,可优化)
for i in ${@};do [ "$i" = "/" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/root" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/home" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/root/" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/home/" ] && SBRUN ;done
RMPATH=""
# rm -rf时要去掉-rf参数
for arg in "$@"
do
IS_ARG=$(echo "$arg" | grep "^-")
if [ -z "$IS_ARG" ]; then
if [ -n "$RMPATH" ]; then
RMPATH="${RMPATH} "
fi
RMPATH="${RMPATH} $arg"
fi
done
if [ -n "$RMPATH" ]; then
FILE_PARENT_DIR=$(pwd $RMPATH)
SUFFIX=$(echo `date "+%y%m%d"`)
SUFFIX1=$(echo `date "+%H%M%S"`)
#备份文件名称
FILE_TRASH_DIR="${TRASH_DIR}/${SUFFIX}/${SUFFIX1}/${FILE_PARENT_DIR}.rm.tmp"
if [ ! -d "$FILE_TRASH_DIR" ]; then
mkdir -p $FILE_TRASH_DIR
fi
mv $RMPATH "${FILE_TRASH_DIR}"
fi
vim rmdev.sh
#!/bin/bash
cp ./rmdev /bin/rmdev
chmod 755 /bin/rmdev
#定期删除文件
echo '0 10 * * 1 \rm -rf /tmp/userdel/*' >> /var/spool/cron/root
[ -f /etc/bash.bashrc ] && (sed -i "/rmdev/d" /etc/bash.bashrc && echo 'alias rm="/bin/rmdev"' >> /etc/bash.bashrc && . /etc/bash.bashrc)
[ -f /etc/bashrc ] && (sed -i "/rmdev/d" /etc/bashrc && echo 'alias rm="/bin/rmdev"' >> /etc/bashrc && . /etc/bashrc)
[ -f /root/.bashrc ] && (sed -i "/alias rm/d" /root/.bashrc && echo 'alias rm="/bin/rmdev"' >> /root/.bashrc && . /root/.bashrc)
[[ -f "~/.bashrc" && "$USER" != "root" ]] &&(sed -i "/alias rm/d" ~/.bashrc && echo 'alias rm="/bin/rmdev"' >> ~/.bashrc && . ~/.bashrc)
增加脚本执行权限:chmod +x rmdev.sh
执行脚本,重新登陆即可生效
./rmdev.sh
删除演示:
删除文件
严禁执行的目录,给出提示并强制退出执行
删除文件后,会在/tmp/userdel目录下生成执行用户的目录,此用户删除的文件都在此目录下的.trash目录里面,根据删除时间可以找到具体删除的文件
定期清理/tmp/userdel目录,\rm代表使用系统的rm命令
-----------日常记录---------------