由于目前大家使用的Linux文件系统大多是Ext3格式的,文件一旦删除,很可能无法恢复,即便可以恢复也十分麻烦。所以执行rm命令变得异常危险,为此,我们可以编写两个Shell脚本来实现安全删除和恢复文件的功能。
原理很简单,在当前用户的家目录下创建一个隐藏文件夹“.temp”,它相当于Windows系统中的回收站。当我们想安全删除一个文件时,将要删除的文件剪切到该目录下即可。如果想要恢复,再将“.temp”目录内的文件剪切到原始位置便是。
删除文件的Shell脚本我们命名为erase,代码如下:
#! /bin/bash RecycleBin=~/.temp (($#==0)) && { echo "No paraments!";exit 1; } if [ ! -d $RecycleBin ]; then mkdir $RecycleBin fi for i in $* do if test -e $i then cd $(dirname $i) mv -f $(basename $i) $RecycleBin/$(find $(pwd) -maxdepth 1 -name $(basename $i) | tr "/" "=") cd - else echo "$i:No such file or directory!" fi done
恢复文件的Shell脚本我们命名为unerase,代码如下:
#! /bin/bash cd ~/.temp list=$(for i in $*; do ls |grep "\<$i\>"; done) (($#==0)) && { list=$(ls|grep ""); } for j in $list do file=$(echo $j | tr "=" "/") mv $j ${file%/*}/${file##*/} done
保存这两个文件,并使用chmod命令为其添加可执行权限,然后拷贝到“/usr/bin”目录下,之后我们就可以像使用rm命令一样来使用erase跟unerase命令了。下图演示了删除test文件、恢复test文件以及“~/.temp”目录下文件的变化。
要安全删除某些文件,使用eares命令跟上要删除的文件,既支持相对路径也支持绝对路径。要安全恢复某些文件,使用unerase命令跟上要恢复的文件名即可,如果不跟文件名,默认恢复“~/.temp”目录下的所有文件。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。
博客很强大,做得很成功,弱弱地问下,可以交换个友情链接吗
http://www.leezk.com
可以的,我已经将友链加上,以后多多交流^^
直接把rm 命令用alias 重新定义下就可以了吧
也是可以的,比这个更方便一些,只是这样做了之后,原有的rm命令就失效了。
参照了回收站的原理