1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      在Shell中執行vi/cp/mv時自動備份源文件

      更新時間: 2008-02-07 20:31:16來源: 粵嵌教育瀏覽量:395

         以下腳本把所有要編輯的源文件備份到/bak目錄下,并且所有的路徑位置保持不變,比如vii /etc/hosts,則把/etc/hosts復制到/bak/etc/hosts。

       

       

      # cat /sh/vii
                    #!/usr/bin/bash
                    #判斷源文件是否存在,存在才執行備份操作
                    if [ -f "$1" ];then
                    #創建函數,可實現任意鍵繼續
                    #如果你的機器上不認stty raw那么把函數中兩處出現的raw換成cbreak
                    get_char()
                    {
                    SAVEDSTTY=`stty -g`
                    stty -echo
                    stty raw
                    dd if=/dev/tty bs=1 count=1 2> /dev/null
                    stty -raw
                    stty echo
                    stty $SAVEDSTTY
                    }
                    #創建備份的根路徑/bak,并讓所有人具有寫權限
                    if [ ! -d "/bak" ];then
                    mkdir /bak
                    chmod a+w /bak
                    fi
                    #判斷目標文件所處的路徑并創建,讓所有人對新創建的任一級目錄均具有寫權限
                    echo $1 | grep "/" >/dev/null
                    if [ "`echo $?`" = "0" ];then
                    cd ${1%/*}
                    fi
                    pwdnow=`pwd`
                    path=/bak${pwdnow}
                    #echo $path
                    if [ ! -d "$path" ];then
                    mkdir -p $path
                    patha=${pwdnow#/}
                    chmod -R a+w /bak/${patha%%/*}
                    fi
                    #復制目標文件
                    datenow=`date +%Y%m%d`
                    timenow=`date +%H%M%S`
                    /usr/bin/cp $1 ${path}/${1##*/}.${datenow}.${timenow}
                    echo "Target file \"$1\"
                    has been copied to ${path}/${1##*/}.${datenow}.${timenow}"
                    echo "Now going to \"vi $1\",Press any key to continue..."
                    char=`get_char`
                    fi
                    #調用vi命令
                    vi $1
                    調用腳本
                    # chmod a+x /sh/vii
                    # /sh/vii /etc/passwd

       

      你可以把/sh加入到PATH變量中,這樣就更方便了。

       

      同理,涉及cp/mv命令時也備份一下目標文件,以免被意外覆蓋。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 色综合曰本久久 | 亚洲字字幕在线中文乱码 | 亚洲中文字幕人成乱码 | 一区二区三区四区激情另类 | 亚洲啪精品视频网站免费 | 亚洲精品字幕在线观看 |