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

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

vim三種模式:

用法:vim [option…] FILE

編輯模式:

    字符跳轉:

        h:向左移動一個字符

        j:向下移動

        k:向上移動

        l:向右移動

        w:跳轉至下一個單詞詞首

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

        e:跳轉至下一個單詞詞尾

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

        0:跳轉至行首

        $:跳轉至行尾

        G:跳轉至文檔尾部

      注:以上跳轉(除^、0、$)均可在前面加上數字表示跳轉數量:如5l表示跳轉至下5個字符

    刪除:

         x:刪除單個字符,配合#x可以刪除指定個數字符

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

         dd: 刪除光標所在的行,#dd:多行刪除;

    復制粘貼:

         y:用法同d類似

    替換:

         r:直接進行替換

       可視化模式:

            v: 按字符選定

            V:按行行定

       撤消此前的編輯:

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

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

       撤消此前的撤消:

            Ctrl+r

       翻屏操作:

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

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

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

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

輸入模式:

  從編輯模式切換至輸入模式:

     i: 在光標所在處輸入;

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

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

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

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

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

    ESC從輸入模式退出至編輯模式

末行模式:

 在編輯模式下輸入:即可切換至末行模式,ESC可退出末行模式進入編輯模式

    (1) 地址定界:start,end

      #: 具體第#行;

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

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

      .: 當前行

      $: 最后一行

      %:全文, 相當于1,$

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

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

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

    (2) 查找

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

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

      n:與命令同方向;

      N:與命令反方向;

    (3) 查找并替換

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

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

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

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

      修飾符:

       i: 忽略大小寫

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

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

    多文件模式:

     vim FILE1 FILE2 FILE3 …

      :next 下一個

      :prev 前一個

      :first 第一個

      :last 最后一個   

      :qall 退出所有

      :wall 保存所有

    窗口分隔模式:

     vim -o|-O FILE1 FILE2 …

      -o: 水平分割

      -O: 垂直分割

     在窗口間切換:Ctrl+w, Arrow

    單文件窗口分割:

 Ctrl+w,s: split, 水平分割

 Ctrl+w,v: vertical, 垂直分割

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

[root@localhost ~]# sed 's@\(^[[:space:]]\+\)@#\1@g' /tmp/rc.sysinit

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

[root@localhost ~]# sed 's/^[[:space:]]\+//g' /tmp/grub.conf

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

[root@localhost ~]# sed 's/^#[[:space:]]\+//' /tmp/rc.sysinit 

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

sed '1,3s/^/#/g' /tmp/grub.conf

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

vim /etc/yum.repos.d/CentOS-Media.repo  修改

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

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

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

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

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

* */2 * * * grep "^S" /proc/meminfo >> /stats/memory.txt

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

* 8-18/2 * * * echo "howdy"

腳本編程練習

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

#!/bin/bash
#
mkdir /tmp/testdir-$(date +%F)

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

#/bin/bash
#
for i in {1..100};do
  touch /tmp/testdir-2016-07-16/file$i
  let i+=1
done

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

#!/bin/bash
#
i=0
l=$(wc -l /etc/passwd | cut -d" " -f1)
while (( $i <= l )); do
        cat -n /etc/passwd | grep "^[[:space:]]\+$i\>" | awk '{print $2}' | awk -F: '{print $1}'
        let i+=2
done

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

#/bin/bash
#
for i in {10..19};do
  id user$i &>/dev/null && echo "the user is exists" || useradd user$i && echo "user$i" |passwd --stdin user$i &>/dev/null
  let i+=1
done

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

 

#/bin/bash
#
for i in {10..19};do
    if [ -e /tmp/file$i ];then
      echo "file$i exist."
    else touch /tmp/file$i
    fi
    let i+=1
done

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

#/bin/bash
#
for i in {10..19};do
    if [ -e /tmp/file$i ];then
      chown user$i:user$i /tmp/file$i
    else echo "no such file."
    fi
    let i+=1
done

原創文章,作者:dcstrike,如若轉載,請注明出處:http://www.www58058.com/23921

(0)
dcstrikedcstrike
上一篇 2016-07-22 10:11
下一篇 2016-07-22 10:11

相關推薦

  • 用戶與組管理

    如何成為linux用戶?     在linux系統中,要想從系統中獲取資源、對系統進行管理和控制,就需要向系統申請一個賬號,從而實現特定用途,當申請到賬號后,要對它設置口令,這樣用戶賬號就申請成功了,然后可以登陸系統,當用戶登陸系統時,需要通過系統的認證,認證成功后才給予授權,在用戶的使用過程中還會對用戶進行審計。 為什么要設置…

    Linux干貨 2016-08-08
  • Redis高可用架構(1)—Keepalive+VIP

    最近整理一下Redis高可用架構的文檔,也準備分享出來,雖然這些架構也不是很復雜。Redis的高可用方案目前主要嘗試過5種方式,其中2種方式已經在線上使用。 1)Redis Master-Slave + Keepalive + VIP。這是很經典的db架構,也可以用與mysql的主從切換?;驹硎牵篕eepalive通過腳本檢測master的存活,然后通過…

    Linux干貨 2016-04-13
  • Linux下常用的日志收集命令(Redhat&SuSe)

       Linux下日志的采集和分析是一個非常重要的工作,一般廠商在你需要技術支持的時候,都需要你通過對應指令收集系統的信息,我這邊列舉下常用的兩個Linux廠商的收集命令(Redhat Linux以及SuSe Linux),便于收集后,對系統進行全面分析。   sosreport是一個類型于supportconfig …

    系統運維 2016-07-07
  • dns主從

    一、前言 Dns全稱domain name system,當我們訪問一個網站時,在網站輸入一個網址。但是網絡是靠ip地址這個邏輯地址來標識地址的。而一個網址是如何轉換為ip地址的?下面我們將簡單講解下dns的原理。 二、dns查詢過程 在了解dns查詢過程時,我們先了解一些有關dns的專業名詞     根域:用來管理互…

    Linux干貨 2015-10-01
  • Linux進程管理之“四大名捕”

    一、四大名捕 四大名捕,最初出現于溫瑞安創作的武俠小說,是朝廷中正義力量諸葛小花的四大徒弟,四人各懷絕技,分別是輕功暗器高手“無情”、內功卓越的高手“鐵手”、腿功驚人的“追命”和劍法一流的“冷血”本文四大名捕由linux命令所出演      無情:ps     出演      鐵…

    Linux干貨 2016-04-25
  • 常用文本處理命令練習

    1、列出當前系統上所有已經登錄的的用戶的用戶名,注意同一用戶登錄多次,則只顯示一次 [root@keyou ~]#  w -hs | cut -d' ' -f 1 | sort -u  gentoo …

    系統運維 2016-11-13

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-22 10:35

    寫的很好,排版也很棒,可以嘗試自己畫一個思維導圖來總結vim,第5題自己有沒有感覺有點low?加油

欧美性久久久久