只需要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
donecleartrash.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 目录下面了