zoukankan      html  css  js  c++  java
  • 实现Linux系统的回收站

    Linux系统默认没有回收站功能,使用rm命令进行删除操作,文件就会直接从系统中删除,很难恢复。

    今天我们利用简单的shell脚本实现Linux系统下的回收站机制。

    先提供脚本代码

    [root@qll251 ~]# vim /bin/delete
      1 #! /bin/bash
      2 [ ! -d /.recycle ] && mkdir -v /.recycle && chmod 777 /.recycle
      3
      4 if  [ $# -eq 0 ]; then
      5   echo "Usage: delete file1 [file2 file3...]" && exit 6
      6 fi
      7
      8 read -p "Are you sure you want to delete it? [Y/N]: " action
      9 case $action in
     10         y)  ;;
     11         Y)  ;;
     12         *)  exit
     13 esac
     14
     15 for file in $@; do
     16     now=`date +%Y-%m-%d-%H:%M:%S`
     17     newfile=`basename $file`
     18     mv $file /.recycle/$newfile.$now && echo "$file is deleted!"
     19 done
    

    一、脚本解释

    1)在/bin目录下创建脚本文件delete(方便系统用户直接调用delete命令)

    2)首先判断回收站文件夹是否创建;如未创建,则创建/.recyscle;同时设置权限777

    [ ! -d /.recycle ] && mkdir -v /.recycle && chmod 777 /.recycle
    

    3)判断传给脚本的个数是否为0,如果为真,则输出帮助信息,同时终止脚本

    if  [ $# -eq 0 ]; then
      echo "Usage: delete file1 [file2 file3...]" && exit 6
    fi
    

    4)设置一个用户交互,类似Windows的弹窗提醒
    (接收用户的输入,将其放入action变量)

    read -p "Are you sure you want to delete it? [Y/N]: " action
    

    5)理解为:收到用户的同意信号,继续执行执行脚本;否则直接退出程序

    case $action in
            y)  ;;
            Y)  ;;
            *)  exit
    esac
    

    6) 将目标文件根据当前时间重命名后移动到/.recycle
    命令解释

    1. $@:传给脚本的所有参数(这里表示所有待删除的文件)
    2. basename:去掉路径信息,返回纯粹的文件名
    for file in $@; do
        now=`date +%Y-%m-%d-%H:%M:%S`
        newfile=`basename $file`
        mv $file /.recycle/$newfile.$now && echo "$file is deleted!"
    done
    

    二、设置脚本可执行权限

    [root@qll251 ~]# chmod +x /bin/delete
    

    三、定时清空垃圾箱

    执行crontab -e,设置每周执行清空回收站动作

    0 0 * * 0 rm -rf /.recycle
    

    四、进行测试

    在这里插入图片描述

    如果delete命令用着不习惯,我们也可以给rm配置别名。将rm命令替换为delete

    以下是具体实现方法:

    编辑~/.bashrc文件,增加一行

    alias rm='sh /bin/delete'
    

    执行source ~/.bashrc使替换立即生效
    在这里插入图片描述

    更多IT技术,请微信搜索公众号秦露露或者扫描下方二维码关注

    在这里插入图片描述

    十年磨一剑
  • 相关阅读:
    Git 开发、合并、提交的一些常见命令语句
    selenium自动化过程中窗口句柄的问题
    git 忽略文件夹下面的文件,但是保留空文件夹
    python接口测试中不同的请求方式
    python接口测试中发送请求中的一些参数
    python接口测试中的session运用
    接口测试数据依赖处理
    pygame的安装
    Bottstrap的基本用法
    前端CSS
  • 原文地址:https://www.cnblogs.com/qinlulu/p/12317316.html
Copyright © 2011-2022 走看看