Linux回收站的设计与实现

作为Linux系统管理员或者软件开发人员,当你使用rm命令删除文件之后发现该文件依然有用但无法恢复,或者使用 ‘rm -rf’强制误删了某些文件时,是否为此感到痛苦不堪。是否苦恼于Linux缺乏类似Windows系统的回收站。虽然某些Linux图形界面具有回收站功能,但是在命令行中依然缺乏回收站功能的支持。本文通过shell脚本实现一个回收站命令trash,提供基于Linux系统命令行的回收站功能,让误删的文件能够恢复如初。在多数情况下,你可以使用trash命令替代rm命令进行删除文件操作。此命令可运行在带bash的Linux server、Linux桌面系统、嵌入式Linux系统上。

回收站功能简介

通过usage函数显示trash命令的帮助信息。

function usage(){
   
            echo "Function: Put files or directories in trashcan."
            echo "Usage: trash [OPTION]... FILE..."
            echo "Options:"
            echo "    -h | -help        Show the help mesage"
            echo "    -t | -trash       Move contents to trashcan"
            echo "    -f | -force       Delete contents forcely"
            echo "    -l | -list        List contents in trashcan"
            echo "    -r | -restore     Restore the contents in trashcan"
            echo "    -d | -delete      Delete contents from trashcan"
            echo "    -e | -empty       Empty trashcan"    
            echo "    -c | -config      Configure crontab task,empty trashcan regularly"
    }

执行trash -h或者trash不带参数时,显示trash命令帮助信息如下:

这里写图片描述

trash命令删除文件时,实际上是将文件移动到用户根目录的trashcan目录中,同时将文件名、删除时间、原始路径记录在.record隐藏文件中;通过trash -r选项可将文件从回收站中恢复到原始路径;确信文件可删除的情况下,可使用trash -f进行彻底删除操作;trash -d和-e选项用于清除回收站中文件;执行trash -c将清理回收站指令添加到crontab任务中,系统会定期自动清理回收站。

初始化

运行trash命令时,首先进行初始化,代码片段如下:

PATH_TRASHCAN=~/trashcan
PATH_RECORD=$PATH_TRASHCAN/.record
PATH_CRON=/var/spool/cron
function init(){
   
    if [ ! -d $PATH_TRASHCAN ]
        then
        mkdir $PATH_TRASHCAN
        chmod 600 $PATH_TRASHCAN
    fi
}

定义回收站目录,用于存放删除的文件或者文件夹。Trash命令在当前用户根目录中新建trashcan目录来存放文件。如代码所示,init函数首先判断trashcan目录是否存在,如果不存在,则新建该目录且将trashcan目录权限设置为当前用户可读写,禁止其他用户对trashcan目录的访问权限。

参数判断以及处理

初始化完成之后,需要对trash命令的参数进行判断和处理。

    if [ $# -ge 1 ]
    then    
        declare param=()
            param_circle=0
        for i in $@; do
        param[param_circle]=$i
        param_circle=$(($param_circle+1))
        
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值