首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

rm 圈套

2012-09-04 
rm 陷阱熟悉Linux的朋友们,一定经常用rm这个command。而经常有一些朋友喜欢直接加上参数-rf。所以当误删除的

rm 陷阱

熟悉Linux的朋友们,一定经常用rm这个command。而经常有一些朋友喜欢直接加上参数-rf。所以当误删除的时候,一定非常怀念window系统,因为它有个回收站。这样可以很方便的找出来。但是在linux下如何避免这样的问题发生呢。

?

自己简单地总结了2个方法:

1。alias rm .不能直接call rm command,需要写完整的路径来调用rm command。比如:

?? ?alias rm=' echo call /bin/rm -i'

这样可以简单的提醒下。

2. 改变默认的rm 行为。

可以通过自己写一个bash script。让rm调用这个bash script。而这个bash script可以实现如何提醒或者不删除,而把要删除的文件移动到另外的地方或者目录。

自己简单实现了一个可以move和double check 的rm。具体代码如下。希望拍砖啊。?#!/bin/bash

promt_usage(){        cuser=`who am i |awk '{print $1}'`        echo "****************************************"        echo "*                                      *"        echo "*       \\\\---$cuser---////           *"        echo "*    Delete: Please Be Careful         *"        echo "*                                      *"        echo "****************************************"}promt_mv(){        echo "**************************************"        echo "*                                    *"        echo "* Current status:pre-moving          *"        echo "* move files:$@                      *"        echo "*                                    *"        echo "**************************************"}drm(){        promt_usage        BACK_UP=no        PROMT=no        RECURSIVE=no        FORCE=no        FILE=""        while getopts birf opt        do                case $opt in                        b) BACK_UP=yes                                ;;                        r) RECURSIVE=yes                                ;;                        f) FORCE=yes                                ;;                        i) PROMT=yes                                ;;                        '?')                                ;;                esac        done        #the destination file        while [ "$#" != 0 ]        do                shift                if [[ $@ != -* ]]                then                        break                fi        done        FILE="$@"        #double check rm        if [ "x$BACK_UP" = "xyes" ]        then                promt_mv $FILE                mv $FILE /tmp        else                echo "Are you sure to delete these files(y/n)?"                read ack                echo "Are you sure to delete these fiiles(y/n),really?"                read ack2                #double check                if [[ "x$ack" == "x$ack2" ]] && [[ "x$ack" == "xy" ]]                then                        /bin/rm "$@"                else                        echo "Please check your input!"                fi        fi}?drm "$@"

 alias rm='bash /home/xliang/.drm.sh -i'
?这样可以简单地避免一些,但是还是需要自己的细心才能解决根本问题。。?

热点排行