- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
前言在linux系统下,rm命令是一个可以删除文件的命令,它提供各种参数可以帮助我们以不同的方式删除文件,但是我们有时在用这个命令时会误删一些文件,而删除的文件要恢复就比较麻烦。而在windows系统中,有一个回收站可以盛放我们普通删除的文件而且可以方便管理。我们可以参考windows下的回收站功能编写一个linux下有类似回收站功能的shell脚本来代替rm命令,以下是此shell脚本的介绍。功能简介(1). 实现linux rm命令的功能, 使用起来几乎和linux 系统自带的rm ,命令完全一样(2). 将删除的文件放在指定的回收站文件夹中(3). 恢复删除的文件(4). 删除回收站中指定定文件(5). 该脚本每次在运行时候会检查回收站目录下文件大小之和, 若超过最大容量, 脚本会自动将日志文件中所记录文件中的前一半文件从回收站中清除,所以建议删除大文件(相对于回收站最大容量而言)直接用命令/bin/rm 而不要用 rm。程序整体流程图整体部分:rm 后面参数只有一个的部分:rm 后面带1个以上参数部分:函数4.1 rand()生成7位随机数,用于当有文件进入回收站时在文件名后面加上以区分相同名字的文件。function rand(){ a=(0 1 2 3 4 5 6 7 8 9 a b c d e A B C D E F)for ((i=0;i7;i++))do echo -n ${a[$RANDOM%${#a[*]}]}#从a数组中任取一个元素出来(${#a[*]}表示数组长度)done}4.2 file_null()当要删除的文件或目录不存在时使用此函数提示信息。function file_null(){local file=$1echo rm: cannot remove $file: No such file or directory}4.3 echo_msg()当rm命令后面没加任何参数时使用此函数提示错误信息。function echo_msg(){echo -n rm: missing operandTry rm --help for more information.}4.4 echo_msg2()当rm命令后面输入不符合标准的参数时用此函数提示错误信息。function echo_msg2(){echo -n rm: invalid option $1Try rm --help for more information.}4.5 deal()当用rm命令把文件放入回收站时,若回收站文件夹的存储空间大小超过了设定大小,便执行此函数把回收站中一半的文件删掉。function deal(){local tmp=$(mktemp /tmp/tfile.XXXXXX) local num=$(($(cat $mvlog| wc -l)/2)) #从日志文件中得出回收站中一半的文件数awk -F: -v nu=$num -v trash=$trash {if (NR=nu) system(rm -rf trash/$2:$3); \else print $0} $mvlog $tmp#取出日志文件中后半行数的内容写入到tmp并删除前一半的文件mv $tmp $mvlog}4.6 jug_cur()目录处理函数,例如使用命令rm ../root/test/a 删除1.c文件,则在1.c放入回收站时会将1.c的信息写入trash.log日志文件中,关于1.c信息的那一行有个字段信息是1.c原来所在文件夹路径的,经此函数处理后此信息为/root/test,便于恢复文件。function jug_cur(){local tmp=local dirname=$1 local jug=${dirname/\/*/} #删除以/开头的字符串if [ $jug == . ];then var_pwd=${dirname/./$(pwd)} #将点替换为当前目录路径 JUG=0elif [ $jug == .. ];then tm=$(pwd) tmp=${tm%/*} #删除最后一个以/开头的字符串(上级目录) var_father=${dirname/../$tmp} #替换为上级目录路径 JUG=1 #elif [ $jug == ~ ];then # return 2else JUG=2fi} 4.7 rm1命令只
您可能关注的文档
最近下载
- 电工电子技术(曹建林)全套PPT课件.pptx
- 《民宿文化与运营》课件——第四章 民宿建设.pptx VIP
- 2022版《医疗器械生产监督管理办法》考核试题及答案.docx VIP
- 10KV配电箱验收流程及规范.docx VIP
- 污水处理厂BOT项目投标文件.doc VIP
- 2025届上海浦东新区高三一模高考历史模拟试卷(含答案解析).pdf VIP
- 舒蕾上市谈判手册.docx VIP
- DB4103T 129-2021 产(商)品检验检测机构服务规范.pdf VIP
- 七猫中文网投稿申请表.pdf VIP
- 《C语言程序设计 第4版》 课件全套 索明何 第1--8章 C语言程序设计入门---应用软件设计.pptx
文档评论(0)