免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2500 | 回复: 8

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

论坛徽章:
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
发表于 2007-12-26 23:53 |显示全部楼层
不错~~
由于本人经常误删除文件

这毛病不太好哟~~

论坛徽章:
0
发表于 2007-12-27 15:30 |显示全部楼层
这是个好东西
怎么没人顶?

论坛徽章:
0
发表于 2007-12-29 10:30 |显示全部楼层
自己顶我

论坛徽章:
0
发表于 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
发表于 2008-01-12 19:41 |显示全部楼层
我最近好几个用户不小心自己删除了东西

今天网上找了很多脚本,包括自己也写了一个简单的没mv替换rm的。

总是有些不满意,看到你这个感觉很不错。

老兄我先借用一下,如果有啥改动,我会发上来的。

论坛徽章:
0
发表于 2008-01-12 21:30 |显示全部楼层
可以有问题你就留言就行

论坛徽章:
0
发表于 2008-01-14 12:50 |显示全部楼层
这个东西有记录吗?比如哪个文件是删么时候从哪里移来的?如何恢复到原位?

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

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP