只需要3个脚本文件,放在同一个目录,然后执行: sh start.sh 即可,执行完毕后会提示你手动执行source命令
值得注意的是,如果你还想用原生rm,只需要加上单引号,例如:'rm' test.txt
start.sh
#!/bin/sh mkdir /trash mv ./changerm.sh / mv ./cleartrash.sh / echo $'alias rm=\'sh /changerm.sh\'' >> /etc/bashrc source /etc/bashrc echo $'alias rm=\'sh /changerm.sh\'' >> ~/.bashrc source ~/.bashrc # 00 05 * * * sh /home/shell/cleartrash.sh #每天05:00执行清理回收站的脚本 cron_job="00 05 * * * sh /cleartrash.sh" ( crontab -l | grep -v "$cron_job"; echo "$cron_job" ) | crontab - service crond restart echo -e '请手动执行以下命令:\n source /etc/bashrc \n source ~/.bashrc'
changerm.sh
#!/bin/sh suffix=`date "+%H.%M.%S"` trash_dir=/trash/`date +%Y%m%d`/${suffix}_${RANDOM} #自己创建的回收站路径,本次为/trash/ if [ ! -d ${trash_dir} ] ;then mkdir -p ${trash_dir} fi for i in $* do if [ ! -d "${i}" ]&&[ ! -f "${i}" ];then #首先判断是否是合法的文件或者文件夹 if [[ "${i}" != "-rf" && "${i}" != "-f" ]];then #这里对-rf进行处理,因为mv指令后面没有-rf,-f参数 echo "[${i}] do not exist" fi else file_name=`basename $i` #取得文件名称 mv ${i} ${trash_dir}/${file_name} echo "[${i}] delete completed" fi done
cleartrash.sh
#!/bin/sh trashdir=/trash cd ${trashdir} find ./ -mtime +3 -exec 'rm' -rf {} \; #找到回收站中修改日期大于3天的文件,执行真正的删除
执行完sh start.sh之后,执行以下source命令,让rm替换生效
source /etc/bashrc source ~/.bashrc
到现在为止,就成功了,你也可以执行以下crontab -e 看看目前有哪些定时任务!
被删除的文件就放到 /trash 目录下面了