免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2847 | 回复: 8
打印 上一主题 下一主题

[原创]shell 写的回收站 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-26 19:13 |只看该作者 |倒序浏览
由于本人经常误删除文件,所以用shell写了一个rm命令原理是把要删除的文件移动到宿主目录下的garbage目录中,当此目录到一定的大小后发邮件通知管理员。
1. cd /bin/  ; mv rm rm vm
2. cd /bin/  ; vi rm  增加以下内容

#!/bin/bash

#wds

#v5.0

#2007.11.18

#7717060.cublog.cn

to=$1

to1=$2

home=$HOME/.garbage

dtime=$(date +%M-%H:%M)

userpid=$$

size=$(du -sh $home|awk '{printf $1}')

size1=$(echo $size | grep M)

size2=$(echo $size | sed 's/M//g')

ipaddr=$(/sbin/ifconfig eth0 | awk '/inet /{print substr($2,6)}')

adminemail=7717060@163.com

if [ -n "$size1" -a "$size2" -gt 100 ]

  then

    echo "$home is $size" | mail -s '$ipaddr' '$adminemail'

fi



if [ ! -e "$home" ]

  then

      mkdir -p $home

fi



myrmi ()

{

        echo -e "rm: remove directory '$to1'?\c"

           read -r answer

         if [ "$answer" = y ]

           then

             if [ -d "$to1" ]

               then

                  echo "rm: remove idrectory '$to1'?"

             else

                 if [ -e "$home/$to" ]

                   then

                     mv "$to1" "$home/$to1-$userpid-$dtime"

                  else

                     mv "$to1" "$home"

                 fi   

             fi

         fi            

}



myrmrf ()

{

if [ -e "$to1" ]

  then

    mv "$to1" "$home/$to1-$userpid-$dtime"

else

    mv "$to1" "$home/$to1-$userpid-$dtime"

fi

}



myrm ()

{

if [ -d "$to" ]

      then

        echo "rm cannot remove '$to': IS a directory"

    else

        if [ -e "$home/$to" ]

          then

             mv "$to" "$home/$to-$userpid-$dtime"

        else

             mv "$to" "$home"

        fi

    fi



}



if [ "$#" -eq 1 ]

  then

     case "$to"

       in

        -i) echo "Try 'rm --help' for more informaction." ;;

       -rf) echo "Try 'rm --help' for more informaction." ;;

        -r) echo "Try 'rm --help' for more informaction'" ;;

         *) myrm;;

     esac

fi



     if [ "$#" -eq 2 ]

       then

        case "$to"

            in

               -i) myrmi ;;

              -rf) myrmrf ;;

               -r) myrmrf ;;

                *) echo "'rm --help' for more informaction."

        esac

     fi

        if [ "$#" -gt 2 ]

         then

           for file in $*

             do

               mv $file "$home/"

           done 2> /dev/null

        fi







本命令支持

rm *

rm -r

rm -i

rm -rf 等,

[ 本帖最后由 7717060 于 2008-1-15 13:33 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-12-26 23:53 |只看该作者
不错~~
由于本人经常误删除文件

这毛病不太好哟~~

论坛徽章:
0
3 [报告]
发表于 2007-12-27 15:30 |只看该作者
这是个好东西
怎么没人顶?

论坛徽章:
0
4 [报告]
发表于 2007-12-29 10:30 |只看该作者
自己顶我

论坛徽章:
0
5 [报告]
发表于 2007-12-29 11:27 |只看该作者
我以前也弄过一个类似的,不过是用cron job 自动清理垃圾箱。当时也“广受好评”

不过很惭愧,后来发现那个版本有很多问题,主要清理垃圾箱有问题(虽然总共没几行代码),直到最近还改了一次。不知道现在的还有没有bug

http://blog.chinaunix.net/u/23408/showart.php?id=166954

PS.

贴代码的时候记得用代码标签[code][/code]

[ 本帖最后由 lgfang 于 2007-12-29 11:30 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-01-12 19:41 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2008-01-12 21:30 |只看该作者
可以有问题你就留言就行

论坛徽章:
0
8 [报告]
发表于 2008-01-14 12:50 |只看该作者
这个东西有记录吗?比如哪个文件是删么时候从哪里移来的?如何恢复到原位?

论坛徽章:
0
9 [报告]
发表于 2008-01-14 16:51 |只看该作者
最近比较忙我在考试,等过几天我把上边整个脚本改写一下,把楼上说的,删除的文件原位置记录问题,和其他几个功能写进来,请继续关注一下这里,!!呵呵ing

[ 本帖最后由 7717060 于 2008-1-14 16:52 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP