馬哥教育網絡班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 11:20
下一篇 2016-07-12 11:20

相關推薦

  • Linux文件權限及ACL

    1、文件權限:          文件的權限主要針對三類對象進行定義:                owner:屬主,u表示  …

    Linux干貨 2016-08-05
  • N25第四周總結(lvm)

    lvm 詳解 大綱:    1、什么是lvm     2、為什么要使用lvm     3、如何實現lvm     4、lvm各項命令詳解   1、什么是lvm:        lmv (Logical Volume Manager…

    Linux干貨 2016-12-22
  • mkdir用法實踐

    mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自動按需創建父目錄; -v: verbose,顯示詳細過程; -m MODE:直接給定權限;   1、創建/tmp目錄下的:a_c,a_d, b_c, b_d ~]# mkdir -v /tmp/{a,b}_{c,d}…

    Linux干貨 2016-11-06
  • Linux文本三劍客之grep

    一、定義:                 GREP  :Global search REgular expression and Print out the line的縮寫。是一種強大的文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;并把匹配的行打印出…

    Linux干貨 2016-04-05
  • 第一周總結

    ?##### 存儲網絡: “` DAS—–直接連接存儲(Direct attached storage) NAS—–網絡連接存儲(Network attached storage) SAN—–存儲區域網絡(storage area network) “` &#82…

    Linux筆記 2018-04-01
  • Linux進程管理及作業管理

    進程管理 進程概念 Linux內核:搶占式多任務 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等 Process: 運行中的程序的一個副本,是被載入內存的一個指令集合 進程ID(Process ID,PID)號碼被用來標記各個進程 UID、GID、和SELinux語境決定對文件系統的存取和訪問權限 通常從執行進程的用戶來繼承 進程存…

    Linux干貨 2017-05-08

評論列表(1條)

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

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

欧美性久久久久