欢迎来到天天文库
浏览记录
ID:37834178
大小:32.50 KB
页数:3页
时间:2019-06-01
《101个脚本之linux回收站》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、众所周知,linux是没有回收站的,一些人很害怕删错东西(有经验的linux管理员极少范这错误),个人不建议回收站,而应该是培养个人的安全意识。有点小跑题。接着回来101个脚本之#15ArchivingFilesAsThey'reRemoved就是建立一个linux回收站的脚本TheCode#!/bin/sh#newrm,areplacementfortheexistingrmcommand,providesa#rudimentaryunremovecapabilitybycreatinganduti
2、lizinganew#directorywithintheuser'shomedirectory.Itcanhandledirectories#ofcontentaswellasindividualfiles,andiftheuserspecifies#the-fflagfilesareremovedandNOTarchived.#BigImportantWarning:You'llwantacronjoborsomethingsimilartokeep#thetrashdirectoriestame
3、d.Otherwisenothingwilleveractually#bedeletedfromthesystemandyou'llrunoutofdiskspace!mydir="$HOME/.deleted-files"realrm="/bin/rm"copy="/bin/cp-R"if[$#-eq0];then#let'rm'ouptuttheusageerrorexec$realrm#ourshellisreplacedby/bin/rmfi#Parsealloptionslookingfor
4、'-f'flags=""whilegetopts"dfiPRrvW"optdocase$optinf)exec$realrm"$@";;#execletsusexitthisscriptdirectly.*)flags="$flags-$opt";;#otherflagsarefor'rm',notusesacdoneshift$(($OPTIND-1))#Makesurethatthe$mydirexistsif[!-d$mydir];thenif[!-w$HOME];thenecho"$0fail
5、ed:can'tcreate$mydirin$HOME">&2exit1fimkdir$mydirchmod700$mydir#alittlebitofprivacy,pleasefiforargdonewname="$mydir/$(date"+%S.%M.%H.%d.%m").$(basename"$arg")"if[-f"$arg"];then$copy"$arg""$newname"elif[-d"$arg"];then$copy"$arg""$newname"fidoneexec$realr
6、m$flags"$@"#ourshellisreplacedbyrealrm我们来说下这个脚本的实现思路将原本的rm命令用我们这个带有回收站机制的myrm脚本代替(alias别名),脚本将要删除的文件移动到了home下个人目录中以.deleted-files命名的隐藏文件夹。接着我们看看这个脚本是怎么实现的whilegetopts"dfiPRrvW"optdocase$optinf)exec$realrm"$@";;#execletsusexitthisscriptdirectly.*)flags="
7、$flags-$opt";;#otherflagsarefor'rm',notusesacdone这一段说明要是命令用带–f选项的话,则不进回收站,调用原本的rm命令。forargdonewname="$mydir/$(date"+%S.%M.%H.%d.%m").$(basename"$arg")"if[-f"$arg"];then$copy"$arg""$newname"elif[-d"$arg"];then$copy"$arg""$newname"fidone用for循环顺序处理参数newnam
8、e="$mydir/$(date"+%S.%M.%H.%d.%m").$(basename"$arg")"回收站里文件命名.
此文档下载收益归作者所有