馬哥教育網絡班20期 第6周課程練習

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

        vi: Visual Interface,文本編輯器

        文本:ASCII, Unicode

        VIM – Vi IMproved

    vim:模式化的編輯

        基本模式:編輯模式(又叫命令模式)、輸入模式(又叫插入模式)、末行模式:

        模式轉換:

              編輯模式 –> 輸入模式

                      i: insert, 在光標所在處輸入;

                      a: append, 在光標所在處后面輸入;

                      o: 在當前光標所在行的下方打開一個新行;

                      I:在當前光標所在行的行首輸入;

                      A:在當前光標所在行的行尾輸入;

                      O:在當前光標所在行的上方打開一個新行;

             輸入模式 –> 編輯模式

                      ESC

             編輯模式 –> 末行模式

                      :

             末行模式 –> 編輯模式

                      ESC

        打開文件:

            # vim [OPTION]… FILE…

                   +#: 打開文件后,直接讓光標處于第#行的行首;

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

        關閉文件:

            :q 退出

            :q! 強制退出,丟棄做出的修改;

            :wq 保存退出

            :x 保存退出

            :w /PATH/TO/SOMEWHERE

            ZZ: 保存退出;

     末行模式:內置的命令行接口

            光標跳轉:

                 字符間跳轉:

                           h, j, k, l

                               h: 左

                               l: 右

                               j: 下

                               k: 上

                           #COMMAND:跳轉由#指定的個數的字符;

             單詞間跳轉:

                           w:下一個單詞的詞首

                           e:當前或下一單詞的詞尾

                           b:當前或前一個單詞的詞首

                          #COMMAND:由#指定一次跳轉的單詞數

            行首行尾跳轉:

                           ^: 跳轉至行首的第一個非空白字符;

                           0: 跳轉至行首;

                           $: 跳轉至行尾;

            行間移動:

                           #G:跳轉至由#指定行;

                           G:最后一行;

                           1G, gg: 第一行;

            句間移動:

                           )

                           (

           段落間移動:

                           }

                           {

    vim的編輯命令:

          字符編輯:

                      x: 刪除光標處的字符;

                      #x: 刪除光標處起始的#個字符;

                      xp: 交換光標所在處的字符及其后面字符的位置;

         替換命令(r, replace)

                     r: 替換光標所在處的字符

         刪除命令:

                      d: 刪除命令,可結合光標跳轉字符,實現范圍刪除;

                          d$: 

                          d^:

                          d0:

                          dw 

                          de

                          db

                     #COMMAND

                     dd: 刪除光標所在的行;

                     #dd:多行刪除;

        粘貼命令(p, put, paste):

                     p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面;

                     P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面;

        復制命令(y, yank):

                     y: 復制,工作行為相似于d命令;

                         y$

                         y0

                         y^

                         ye

                         yw

                         yb

                     #COMMAND

                     yy:復制行

                     #yy: 復制多行;

    改變命令(c, change)

                      c: 修改

                   編輯模式 –> 輸入模式

                       c$

                       c^

                       c0

                       cb

                       ce

                       cw

                       #COMMAND

                       cc:刪除并輸入新內容

                       #cc: 

     其它編輯操作

               可視化模式:

                    v: 按字符選定

                    V:按行行定

                    Note:經常結合編輯命令;

                          d, c, y

              撤消此前的編輯:

                    u(undo):撤消此前的操作;

                    #u: 撤消指定次數的操作;

              撤消此前的撤消:

                         Ctrl+r

              重復前一個編輯操作:

                          .

              翻屏操作:

                          Ctrl+f: 向文件尾部翻一屏;

                          Ctrl+b: 向文件首部翻一屏;

                          Ctrl+d: 向文件尾部翻半屏;

                          Ctrl+u:向文件首部翻半屏;

          vim自帶的練習教程:

                               vimtutor

    末行模式編輯:

          (1) 地址定界

                :start_pos,end_pos

                       #: 具體第#行,例如2表示第2行;

                       #,#: 從左側#表示行起始,到右側#表示行結尾;

                       #,+#: 從左側#表示的行起始,加上右側#表示的行數;

                       .: 當前行

                       $: 最后一行

                       .,$-1

                       %:全文, 相當于1,$

                       /pat1/,/pat2/:

                              從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束;

                       #,/pat/

                       /pat/,$

                   使用方式:

                                  后跟一個編輯命令

                                             d

                                             y

                                             w /PATH/TO/SOMEWHERE: 將范圍內的行另存至指定文件中;

                                             r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有內容;

       (2) 查找

                    /PATTERN:從當前光標所在處向文件尾部查找;

                    ?PATTERN:從當前光標所在處向文件首部查找;

                          n:與命令同方向;

                          N:與命令反方向;

       (3) 查找并替換

                    s: 在末行模式下完成查找替換操作

                    s/要查找的內容/替換為的內容/修飾符

                           要查找的內容:可使用模式

                           替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容;

                           修飾符:

                                 i: 忽略大小寫

                                 g: 全局替換;默認情況下,每一行只替換第一次出現;

                           查找替換中的分隔符/可替換為其它字符,例如

                                 s@@@

                                 s###

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

cp -a /etc/rc.d/rc.sysinit /tmp
vim /tmp/rc.sysinit
輸入:
:%s/^[[:space:]]\+/#&/

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

cp -a /boot/grub/grub.conf /tmp
vim /tmp/grub.conf
輸入:
:%s/^[[:space:]]\+//

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

vim /tmp/rc.sysinit
輸入:
:%s/^#[[:space:]]\+//

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

vim /tmp/grub.conf
輸入:
:1,3s/^.*/#&/

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

vim /etc/yum.repos.d/CentOS-Media.repo
輸入:
:%s/enable=0/enable=1/g
:%s/gpgcheck=0/gpgcheck=1/g

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

crontab -e
輸入:
i #進入輸入模式
0 */4 * * * cp -a /etc /backup/etc-$(date +%Y%m%d%H%M%S)
:wq

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

crontab -e
輸入:
i #進入輸入模式
* * * * 2,4,6 cp -a /var/log/messages /backup/messages_logs/messages-$(%Y%m%d)
:wq

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

crontab -e
輸入:
i #進入輸入模式
0 */2 * * * grep "^S.*"/proc/meminfo >> /stats/memory.txt
:wq

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

* 9-17/2 * * 1-5 echo "howdy"

腳本編程練習

10、創建目錄/tmp/testdir-當前日期時間; 

mkdir -p /tmp/testdir-$(date +%Y-%m-%d-%H-%M-%S)

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

#!/bin/bash
#
cd /tmp/testdir-*
for i in [1..100];do 
touch file$i
done

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

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

13、創建10用戶user10-user19;密碼同用戶名;

#!/bin/bash
#
for i in [10..19];do
useradd user$i
echo "user$i" |passwd --stdin user$i
done

14、在/tmp/創建10個空文件file10-file19;

#!/bin/bash
#
for i in [10..19];do
mkdir -p /tmp/file$i
done

15、把file10的屬主和屬組改為user10,依次類推。

#!/bin/bash
#
for i in [10..19];do
chown user$i:user$i /tmp/file$i
done

原創文章,作者:N20-重慶-雪寒,如若轉載,請注明出處:http://www.www58058.com/18700

(0)
N20-重慶-雪寒N20-重慶-雪寒
上一篇 2016-07-12
下一篇 2016-07-12

相關推薦

  • 通過view實現智能DNS

    DNS策略解析最基本的功能是可以智能的判斷訪問您網站的用戶,然后根據不同的訪問者把您的域名分別解析成不同的IP地址,然后跟DNS服務器內部的IP表匹配一下,看看用戶的類型,然后給用戶返回對應的IP地址。

    Linux干貨 2017-10-03
  • 魔術方法

    魔術方法 屬性 含義 __name__ 類、函數、方法等的名字 __module__ 類定義所在的模塊名 __class__ 對象或類所屬的類 __bases__ 類的基類的元組,舒徐為他們在基類列表中出現的順序 __doc__ 類、函數的文檔字符串,如果沒有定義則為None __mro__ 類的mro,class.mro()返回的結果保存在__mro__中…

    Linux干貨 2017-11-21
  • iptables/netfilter進階

      在上一章當中我們介紹了iptables的介紹以及它的基本使用,下面我們開始介紹iptables的命令用法以及iptables是如何工作的。 1、回顧 2、iptables相關命令 1、回顧   我們回顧一下上一章節的內容,在上一章節中我們講述的是iptables的基本概念以及命令格式,同時講述規則鏈與表的概念,那么…

    Linux干貨 2017-02-03
  • 馬哥教育網絡班22期+第14周課程練習

    系統的INPUT和OUTPUT默認策略為DROP;   iptables -P INPUT DROP   iptables -P OUTPUT DROP 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了adm…

    Linux干貨 2016-12-05
  • 2016年8月6日作業練習

    練習: 1、顯示/proc/meminfo文件中以大小s開頭的行;(要求:使用兩種方式) [root@localhost ~]# grep -i "^[sS]" /proc/meminfo SwapCached:      &nb…

    Linux干貨 2016-08-07
  • 計算機組成原理

    計算機組成原理 計算機概述 計算機的基本組成: ·         存儲器:     實現記憶功能的部件用來存放計算程序及參與運算的各種數據 ·         運算器:     負責數據的算術運算和…

    Linux干貨 2016-10-31

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-12 12:21

    寫的很好,排版還可以在漂亮一點,加油

欧美性久久久久