Linux下使用shell脚本增加回收站功能,并实现对回收站的内容自动清理【测试成功】

艺帆风顺 发布于 2025-04-03 20 次阅读


一、需求背景

    在Linux上,可能存在误执行rm命令导致服务器崩溃的情况发生,

为尽量降低风险,故增加回收站功能。

二、增加回收站

1、编辑系统环境配置文件

 vim /etc/profile
    ####### trash #######mkdir -p ~/.trash # 路径可以自己创建和命名,不受限制,修改路径名后,记得修改下面三个函数里面的路径alias rm=trash # 将rm别名成trash,调用trash函数alias ur=undelfile # 使用别名定义一个ur命令,调用undelfile函数,作用是还原文件
    function undelfile(){ # 通过$@将ur后面的参数逐一传给mv移动到当前目录下 mv -i ~/.trash/$@ ./ # mv -i 当目标文件存在时,提示是否覆盖}
    function trash(){ # 在终端输入的rm命令,会通过别名alias调用trash函数,再通过$@将rm后面的参数逐一传给mv移动到.trash目录下 mv $@ ~/.trash/}
    function cleartrash(){ # 在终端输入 cleartreash ,就会调用这里的函数,输入'y 或 Y',就会清空.trash目录下的内容 read -p "clear sure?[n]" confirm [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* # /bin/rm 不受别名的限制,会直接删除文件}####### trash end #######
      alias rm=trash alias ur=undelfile function undelfile(){  mv -i /home/trash/$@ ./ }function trash(){  mv $@ /home/trash/}function cleartrash(){  read -p "clear sure?[n]" confirm [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf /home/trash/* }####### trash end #######

      2、使其立即生效

          source   /etc/profile

      三、验证测试

      1、删除文件测试

        [root@JQNode1 home]# touch 2[root@JQNode1 home]# rm -f 2[root@JQNode1 home]# cd trash/[root@JQNode1 trash]# ls2 test.txt

        2、删除目录测试

          [root@JQNode1 home]# mkdir dir[root@JQNode1 home]# cd dir/[root@JQNode1 dir]# touch 1 2 3 4 5 [root@JQNode1 home]# rm dir/[root@JQNode1 home]# lstrash yxtf[root@JQNode1 home]# cd trash/[root@JQNode1 trash]# ls2 dir test.txt[root@JQNode1 trash]# cd dir/[root@JQNode1 dir]# ls1 2 3 4 5

          备注:使用绝对路径/bin/rm进行删除,不会被移动到回收站,会直接进行删除。

          四、实现自动清理回收站

          比如自动删除7天以前的回收站文件

          vim trash.sh

            #!/usr/bin/env bashfind /home/trash -ctime 7 -type f -name "*" -exec /bin/rm -rf {} ;

            实现每天0:00自动清理回收站

                crontab -e

            0 * * * /ops/trash.sh