第六周作業

請詳細總結vim編輯器的使用并完成以下練習題

基本模式:
    編輯模式,命令模式
    輸入模式
    末行模式
        內置的命令行接口
打開文件
    vim [options] [file ..]

        +#:打開文件后,直接讓光標處于第#行
        +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
        + 空格:直接到末尾

模式轉換:
    編輯模式 --> 插入模式
        i:insert,在光標所在處輸入
        a:append,在光標所在處后方輸入
        o:在光標所在處的下方打開一個新行
        I:在光標所在行的行首輸入
        A:在光標所在行的行尾輸入
        O:在光標所在處的上方打開一個新行

        輸入模式 --> 編輯模式

            Esc
        編輯模式 -->末行模式
            :
        末行模式 --> 編輯模式

            Esc
    關閉文件:
        ZZ:保存并推出
        :q:退出
        :q!:強制退出,不保存此前的編輯操作
        :wq:保存并推出
            :w,:q
        :x保存并推出
        :w /PATH/TO/SOMEFILE
    光標跳轉:
        字符間跳轉
            h:左
            j: 下
            k: 上
            l: 右
            #COMMAND:跳轉由#指定的個數的字符

    單詞間跳轉
        w: 下一個單詞的詞首
        e: 當前或后一個單詞的詞尾
        b: 當前或前一個單詞的詞首
    行首行尾跳轉
        ^: 跳轉至行首的第一個非空白字符
        0:跳轉至行首
        $: 跳轉至行尾
    行間跳轉
        #G:跳轉至由#指定的行
        1G,gg:第一行
        G:最后一行
    句間跳轉:
        )
        (
    段間跳轉
        }
        {
    翻屏:
        Ctrl+f:向文件尾翻一屏
        Ctrl+b:向文件首部翻一屏
        Ctrl+d:向問價你未卜翻半屏
        Ctrl+u:向文件首部翻半屏
        Enter:執行向后翻

vim編輯命令
    字符編輯
        x: 刪除光標所在處的字符
        #x: 刪除光標所在處起始的#個字符
        xp:交換光標所在處的字符與其后面的字符的位置
    替換命令(replace)
        r: 替換光標所在處的字符
            rCHAR
    刪除命令
        d:刪除命令,可結合光標跳轉字符,實現范圍刪除
            d$:
            d^:
            dw:
            de:
            db:
                #COMMAND
            dd:
                #dd:刪除光標所處的行起始的共#行
    粘貼命令(p,put,paste)
        p:緩沖區的內容如果為整行,則粘貼在當前光標所在行的下方;否則,則粘貼至當前光標所在處的后方
        P:緩沖區的內容如果為整行,則粘貼咋當前光標所在行的上方;否則,則粘貼至當前光標所在處的后方
    復制命令(yank,y)
        y$
        y^
        yo
        ye
        y
        yw
        yb
            #COMMAND
        y:復制,工作行為相似與d命令
            yy:復制一整行
                #yy:復制# 行
    改變命令(change,c)
        編輯模式 --> 輸入模式,實現刪除操作
            c$
            c^
            co
            cb
            ce
            cw
                #COMMAND
            cc:刪除光標所在的行,并轉換為輸出模式

    可視化模式,
        v:按字符選定
        V:按行選定

        結合編輯命令使用:d,c,y

    撤銷(undo)操作
        u: 撤銷此前的操作
            #u:撤銷此前的#個操作

    撤銷此前的撤銷:
        Ctrl+r
    重復執行前的一個編輯操作:
        .

vim自帶的練習教程:vimtutor

vim末行模式 
    內建的命令行接口

    (1)地址定界
        :start_ports[,end_pos]
            #:特定的第# 行,例如5即第5行
            .:當前行
            $:最后一行
            #,#: 指定行范圍,左側為起始行,右側為結束行
            #,+#:指定行范圍,左側為起始行絕對編號,右側為相對左側行號的偏移量,例如:3,+7
                .,$-1 當前行到倒數第二行
                1,$:全文
            %:全文
            /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行
                /first/,$
            /pat1/,/pat2/:從光標所在處起始,第一次由part1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行
        可同編輯命令一同使用,實現編輯操作
        d
        y
        c

        w /PATH/TO/SOMEFILE:將范圍內的文本保存至指定的文件中
        r /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取并插入至指定位置


    (2)查找
        /PATTERN: 從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串
        ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串
            n:下一個,與命令方向相同
            N:上一個,與命令方向相反

    (3)查找并替換
        s:末行模式的命令
            s/要查找的內容/替換為的內容/修飾符
                要查找的內容:可使用正則表達式
                替換為的內容:不能使用正則表達式,但可以引用
                    如果“要查找的內容”部分在模式中使用分組符號;在“替換為的內容”中使用后向引用
                    直接引用查找模式匹配到的全部文本
                修飾符:
                    i:忽略大小寫
                    g:全局替換,意味著一行中如果匹配到多次,則均替換               
            可把分隔符替換為其它非常用字符;
                s@@@
                s###

1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;

 :%s@^[[:space:]]\+@#&@g

2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;

 :s@^[[:space:]]\+@@g

3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符

 :%s@^#[[:space:]]\+@@g

4、為/tmp/grub.conf文件中前三行的行首加#號;

 :1,3s@^@#&@g

5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;

 :%s@\(enabled\|gpgcheck\)=0@\1=1@g

6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202

 * */4 * * * /usr/bin/cp -r /etc/ /backup/etc-`date +%Y%m%d%H%M`

7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402

 * * * * 2,4,6 /usr/bin/cp -r /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`

8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中

 * */2 * * * /usr/bin/grep '^S' /proc/meminfo >> /stats/memory.txt

9、工作日的工作時間內,每兩小時執行一次echo "howdy"

 * */2 * * 1-5 echo "howdy" 2>&1

腳本編程練習
10、創建目錄/tmp/testdir-當前日期時間;

  1 #!/bin/bash
  2 #
  3 
  4 DATE=`date +%Y%m%d%H%M%S`
  5 if [ -d /tmp/testdir-$DATE ];then
  6         echo "/tmp/testdir-$DATE is exist."
  7 else
  8         mkdir /tmp/testdir-$DATE
  9 if [ -d /tmp/testdir-$DATE ];then
  10 
  11         echo "/tmp/testdir-$DATE create success."
  12 else
  13         echo "/tmp/testdir-$DATE create failure."
  14 
  15 fi
  16 fi

11、在此目錄創建100個空文件:file1-file100

  1 #!/bin/bash
  2 #
  3 
  4 for i in {1..100};do
  5 if [ -e ./file$i ];then
  6         echo "./file$i is exit."
  7 else
  8         touch ./file$i
  9 fi
  10 done

12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;

 sed -n '2~2p' /etc/passwd | cut -d: -f1

原創文章,作者:N25-趙叔,如若轉載,請注明出處:http://www.www58058.com/68430

(0)
N25-趙叔N25-趙叔
上一篇 2017-02-13 21:49
下一篇 2017-02-14 12:57

相關推薦

  • varnish

    Web Page Cache: squid –> varnish程序的運行具有局部性特征:時間局部性:一個數據被訪問過之后,可能很快會被再次訪問空間局部性:一個數據被訪問時,其周邊的數據也有可能被訪問到 cache:命中 熱區:局部性;時效性:緩存空間耗盡:LRU過期:緩存清理 緩存命中率:hit/(hit+miss)(0,1)頁面命中率:…

    Linux干貨 2017-05-22
  • shell 腳本基礎作業

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小 #!/bin/bash :<<EOF 顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小 EOF Host_name=`hostna…

    Linux干貨 2016-08-15
  • 基于mysql的數據庫分析系統(rsyslog)

    rsyslog:日志收集和存儲系統 1.事件在電腦中的日志記錄格式為:     日期時間 主機 進程[pid]:事件內容 2.rsyslog的特性:     多線程;     UDP,TCP,SSL/TLS,RELP; &nbsp…

    Linux干貨 2016-10-23
  • N23-第四周博客作業

    1、復制 /etc/skel 目錄為 /home/tuser1,要求 /home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1 && chmod -R g-r,o-r /home/tuser1 (1)使用cp命令的-r選項,將/e…

    Linux干貨 2016-12-05
  • sed的用法小結

    sed的用法小結 sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等sed [OPTION]… ‘script’ [input-file] … OPTION: -n 不輸出模式空間中的內容至屏幕,僅顯示script處理后的結果 -e 多點編輯,eg: ~]# sed -e ‘s@^#[[…

    Linux干貨 2017-08-22
  • grep初步認識

    grep初步認識

    Linux干貨 2017-12-03
欧美性久久久久