Linux系统下编写类Win回收站功能

Linux系统下编写类Win回收站功能

rm -rf 是一个极其危险的命令,稍不注意,就会造成不可挽回的损失。
毕竟Linux系统,不像Windows系统那样自带回收站功能,只要不清空回收站,都可以恢复。

首先创建回收站目录,且赋予权限

注意你分区空间的情况,回收站的位置,生产环境下尽量放在空间较大的分区下。
我这边因为是测试,所以放在了 /root 下

[root@1206 ~]# mkdir .trash
[root@1206 ~]# chmod 777 .trash

编辑系统配置文件

[root@1206 ~]# vim .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

#回收站功能编写
# rm transform
function rm() {
    # 定期清理回收站,时间可调整
    dir=$(ls /root/.trash/)
    #遍历目录下的内容,存入dir
    now=$(date +%s)
    #获取当前时间,按秒计算
    for d in $dir
    #取上面的$dir内容循环,也就是/root/.trash/目录下的内容
    do
        dir_time=$(stat -c %Y /root/.trash/$d)
        #stat指令,文件/文件系统的详细信息显示
        #stat -c %Y
        # -c  : 自定义输出格式,结尾有换行
        # %Y  : 最后修改时间(内容改变)
        dir_times=$((now - dir_time))
        # 如果大于等于7*24*60*60=604800,也就是一周前的目录,删除
        if [[ $dir_times -gt 60 ]] ;then
        #这里为了方便测试,超时时间设置为1分钟
            echo "目录:" $d " 超过设定时效,已删除 "
            /bin/rm -rf /root/.trash/$d
        fi
    done
    # 重写rm命令,将文件mv到回收站下
    date=$(date +%Y%m%d%H_%M)
    #自定义时间格式,我用的格式是 年月日时_分,主要是为了测试方便,所以加了时_分
    mkdir -p /root/.trash/$date
    #创建[回收站]内移除文件时间的目录
    if [[ -z $1 ]] ;then
    #判断字符串是否为空
            echo '请输入您要移入回收站的文件'
        return
    fi
    echo "文件:" ${!#} " 已被移入回收站"
    mv ${!#} /root/.trash/$date
    #移入回收站
}

使配置文件生效

[root@1206 ~]# source ~/.bashrc

创建测试回收站需要的文件

[root@1206 ~]# touch 1.txt
[root@1206 ~]# touch 2.txt
[root@1206 ~]# touch 3.txt
[root@1206 ~]# touch 4.txt
[root@1206 ~]# touch 5.txt
[root@1206 ~]# touch 6.txt

删除文件并查看当前系统时间

[root@1206 ~]# rm -rf 1.txt 
文件: 1.txt  已被移入回收站
[root@1206 ~]# date
20210519日 星期三 11:08:32 CST
[root@1206 ~]# ll .trash/
总用量 4
drwxr-xr-x 2 root root 4096 519 11:08 2021051911_08

删除文件并查看当前系统时间

[root@1206 ~]# rm -rf 2.txt 
文件: 2.txt  已被移入回收站
[root@1206 ~]# date
20210519日 星期三 11:09:13 CST
[root@1206 ~]# ll .trash/
总用量 8
drwxr-xr-x 2 root root 4096 519 11:08 2021051911_08
drwxr-xr-x 2 root root 4096 519 11:09 2021051911_09

删除文件并查看当前系统时间

[root@1206 ~]# rm -rf 3.txt 
目录: 2021051911_08  超过设定时效,已删除 
文件: 3.txt  已被移入回收站
[root@1206 ~]# date
20210519日 星期三 11:09:50 CST
[root@1206 ~]# ll .trash/
总用量 4
drwxr-xr-x 2 root root 4096 519 11:09 2021051911_09

真正的删除命令

/bin/rm -rf

后记

这样,我们的回收站自动清理功能,就完成了,当然,这样的“自动清理”还是不够智能,如果想要真正的自动清理回收站功能,可以写一条定时任务,定期执行 /bin/rm -rf 清理.trash/即可

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值