Wicked

第二章:Improving On User Commands--15.将删除的文件存档

你离开我真会死。 提交于 2019-12-09 10:35:24
以过往的经验来看,Unix用户最常见的一个问题是无法恢复意外删除的文件和目录。键入 rm xyz 之后,一旦你按下RETURN键,那么一切都是浮云了。这个问题的一个解决方案是秘密的、自动的存档文件和目录。想象一下,这个脚本中的基本工作可以做的让用户毫无察觉。 #!/bin/sh # newrm.sh, 一个rm命令的替代品, # 通过在用户的家目录下建立并利用一个新目录,提供了一个非删除的能力 # 它可以处理目录,也可以处理独立的文件, # 如果用户提供了-f 选项,那么删除时就不会存档 # 重要警告:如果你要自动完成删除垃圾目录的工作,那么不要使用 # 该脚本,因为这意味着你事实上什么也没有删除,最终你的磁盘空间会爆满 mydir="$HOME/.deleted-files" realrm="/bin/rm" copy="/bin/cp -R" if [ $# -eq 0 ]; then # 让 'rm' 输出用法错误信息 exec $realrm #当前的shell被 /bin/rm替换掉 fi # 解析所有选项查找'-f' flags="" while getopts "dfiPRrvW" opt; do case $opt in f)exec $realrm "$@" ;; # exec 让我们直接退出这个脚本 *)flags="$flags-$opt" ;; #

第二章:Improving On User Commands--16.使用已删除的文档

别说谁变了你拦得住时间么 提交于 2019-12-07 14:37:06
既然有了一个被删除文件的目录,而且这个目录是在用户的家目录下的隐藏目录,那么一个让用户检索这些已删除文件的脚本的程序就会非常有用了。不管怎样,想要表明所有可能发生的情况是很难的,因为它包括了没有匹配、仅有一个匹配以及多个匹配三种情况。在多个匹配的情形中,比如,你是想要挑出最新的文件,然后将它还原?还是指明有多少种情况匹配成功,然后就退出?又或是展示下不同情况的数据然后供用户挑选?下面,让我们来看看我们到底都能做些什么... #!/bin/sh # unrm.sh -- 查找已删除文档中的给定文件或是目录 # 如果有多个匹配,那么给出一个按时间戳排序的结果列表, # 然后,让用户指定还原哪个 mydir="$HOME/.deleted-files" realrm="/bin/rm" move="/bin/mv" dest=$(pwd) if [ ! -d $mydir ]; then echo "`basename $0`: No deleted files directory: nothing to unrm" >&2 exit 1 fi cd $mydir if [ $# -eq 0 ]; then echo "Contents of your deleted files archive(sorted by data):" # ls中的-F是给列出来的项增加指示器,比如