ceonts实现一个简单回收站

ceonts实现一个简单回收站

在工作中,很容易通过 rm -rf 命令把重要文件删了,所以需要设置个回收站延后删除

bash脚本

为了多个用户不影响,在~/.bashrc中新增一下内容:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
mkdir -p ~/.trash  #在home目录下创建一个.trash文件夹
timeFile=~/.trash/.timestamp
if [ ! -f $timeFile ];then
        touch $timeFile
fi

# alias rm=del    # 一开始使用别名del代替rm,但一些工具只识别rm命令,因此这种系统的命令都别掩盖了
del()        #函数del,作用:将rm命令修改为mv命令
{
        stamp=$(date "+%Y-%m-%d_%H:%M") # date以时间戳的形式赋值
        stamp_key=$(date "+%s")
        # 这里不能用 "~/.trash/"${stamp}"_trash",会在当前目录下新建~,被删除的文件会移动到当前目录的~目录下
        # 创建子文件是方便 rm *时,方便批量恢复,同时避免同名文件覆盖
        subfolder="/home/"${USER}"/.trash/"${stamp}"_trash"
        mkdir -p $subfolder
        mv $@ $subfolder
        echo $stamp_key+"=>"$stamp >> $timeFile
}

cleardel()     #函数cleardel,作用:清空回收站.trash文件夹,y或Y表示确认,n表示取消
{
        read -p "clear sure[Input 'y' or 'Y' to confirm. && Input 'n' to cancel.]" confirm
        [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
}

# 不要输出内容,不然使用上传文件工具上传文件时,提示目录不存在
# echo "Welcome to zenger's world!"

crond定时任务

在docker中安装centos7,执行一下命令:

# 如果docker没有宿主机权限,直接以root权限开启crond
su root
crond
crontab -e
# 输入以下内容,每天凌晨1点执行clearday.sh脚本
0 1 * * * /home/algotran/shell/clearday.sh

然后回收逻辑在clearday.sh中实现(记得chmod +x clearday.sh)

#!/bin/bash

# 指定要删除文件的目录路径
dir_path="/home/algotran/.trash"

# 删除目录下的所有文件
rm -rf ${dir_path}/*

你可能感兴趣的:(Linux,服务器,centos,个人开发)