N22-第六周作業

vim小小的總結

(本總結摘自馬哥網絡班22期課堂筆記)

vim是一款交互式的全屏編輯器,是vi的升級版,在vi上增強了很多,如:多級撤銷,多窗口和多緩沖區,語法高亮,在線幫助等。

vim也是一種模式化的編輯器。分別是編輯模式也叫命令模式,輸入模式,末行模式。其中使用vim打開文件后默認的是編輯模式。

三種模式之間的轉換:

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

輸入模式--->編輯模式
    ESC鍵

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

末行模式--->編輯模式
    ESC鍵

打開文件:

vim [options] [file…]

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

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

關閉文件

ZZ:保持并退出
:q 退出(如果文件有改動此命令沒法退出文件)
:q! q強制退出,不保存此前的編輯操作
:wq 保存并退出 
:x 保存并退出
:w /PATH/TO/SOMEFILE (保存至某文件)

光標跳轉:

字符間跳轉
    h:左
    j:下
    k:上
    l:右
    #COMMAND:跳轉#個數的字符
單純間跳轉
    w:下一個單詞的詞首
    e:當前或后一個單詞的詞尾
    b:當前或前一個單詞的詞首
    #COMMADN:跳轉#個數的單詞
行首行尾跳轉
    ^:跳轉至行首的第一個非空白字符
    0:跳轉至行首
    $:跳轉至行尾
行間跳轉
    #G:跳轉至由#指定的行
    1G,gg:第一行
    G:最后一行
句間跳轉:
    )
    (
段間跳轉
    }
    {

vim的編輯命令:

字符編輯:
    x:刪除光標所在處的字符
    #x:刪除光標所在處起始的#個字符
    xp:交換光標所在處的字符與其后面的字符的位置
替換命令
    r:替換光標所在處的字符
        如:rCHAR
刪除命令
    d:刪除命令,可結合光標跳轉字符,實現范圍刪除
       如:d$:刪除光標處至行尾處的字符
    dd:刪除光標所在行
        #dd:刪除以光標所在行為起始行的共#行
粘貼命令
    P:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方,否則,則粘貼至當前光標所在處的后方;
    p:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方;否則,則粘貼至當前光標所在處的前方;
復制命令
    y:復制,工作行為相似于d命令,可結合光標跳轉字符,實現范圍復制
      如:y$,y^,y0,ye,yw
    yy:復制一整行
        #yy:復制#行
改變命令(c)
    編輯模式--->輸入模式,實現刪除操作,同樣有c$,c^,c0,cb,ce,cw等
    cc:刪除光標所在的行,并轉換為輸出模式,同樣有  #cc 
其他編輯操作:
    可視化模式
        v:按字符選定
        V:按行選定
        可結合編輯命令使用:d,c,y
    撤銷操作
        u:撤銷此前的操作;還可以使用ctrl+r
            #u:撤銷此前的#個操作
    重復執行前一個編輯操作
        .

VIM末行模式: 內建的命令行接口

1,地址定界
    :start_pos[,end_pos]
        #:特定的第#行,例如5即第5行
        .:當前行
        $:最后一行
        #,#:指定行范圍,左側為起始行,右側為結束行
        #,+#:指定行范圍,左側為起始行絕對編號,右側為相對左側行號的偏移量
        %:全文
        /pattern/:從光標所在處起始向文件尾部第一次被匹配到的行
        /pat1/,/pat2/:從光標所在處起始,第一次由pat1匹配到的行開始,至第一次由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文件中的以至少一個空白字符開頭的行的行首加#;

]# cp /etc/rc.d/rc.sysinit /tmp/grub
]#vim rc.sysinit
:
:%s@^[[:space:]]\+@#&@g
:wq

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

]# cp /boot/grub/grub.conf /tmp
]#vim grub.conf
:
:%s@^[[:space:]]\+@@g
:wq

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

]#vim /tmp/rc.sysinit
:%s@^#[[:space:]]\+@@g
:wq

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

]#vim /tmp/grub.conf
:1,3s@.*@#&@g
:wq

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

]#vim /etc/yum.repos.d/CentOS-Media.repo
:%s@\(enabled\|gpgcheck\)=0@\1=1@g  
:wq

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

0 */4 * * * /bin/cp -R /etc/ /backup/etc-$(date +%Y%m%d%H%M)

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

0 0 * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)

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

0 */2 * * * /bin/grep -E "^S" /proc/meminfo >> /stats/memory.txt

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

0 */2 * * 1,2,3,4,5 /bin/echo "howdy"

腳本編程練習

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

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

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

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

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

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

#!/bin/bash
#

#創建目錄/tmp/testdir-當前日期時間
filename=$(date +%Y%m%d%H%M%S)
mkdir /tmp/testdir-${filename}

#在此目錄創建100個空文件:file1-file100,此處沒有判斷系統有無此文件
for i in {1..100};do
	touch /tmp/testdir-${filename}/file$i
done


#顯示/etc/passwd文件中位于第偶數行的用戶的用戶名
sed  -n  'n;p'  /etc/passwd | cut -d: -f 1

#創建10用戶user10-user19;密碼同用戶名
for i in {10..19};do
	useradd user$i
	echo user$i | passwd --stdin user$i
done



#在/tmp/創建10個空文件file10-file19
#把file10的屬主和屬組改為user10,依次類推
for i in {10..19};do
	touch /tmp/file$i
	chown user$i.user$i /tmp/file$i
done

原創文章,作者:N22-成都-stephen,如若轉載,請注明出處:http://www.www58058.com/60076

(0)
N22-成都-stephenN22-成都-stephen
上一篇 2016-11-21 10:12
下一篇 2016-11-21 10:55

相關推薦

  • CentOS6下的網絡信息配置

    簡介     我們都知道在我們互聯網中,所有的通信都通過網絡來完成的,有了網絡當然也要有對應的地址,MAC地址是固定不變的,所以能變的只有IP的地址,那么今天來帶給大家如何在CentOS6中如何配置網卡。當然一下的所有命令都是在CentOS6中進行的。 一、網卡的配置文件    1.操作網卡的命令 …

    Linux干貨 2017-03-20
  • lvs——高可用集群

    技術簡介: LVS集群采用IP負載均衡技術和基于內容請求分發技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。整個服務器集群的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序。為此,在設計時需要考慮系統的透明性、可伸縮性、高可用性和易管理性 集群采用…

    Linux干貨 2016-10-26
  • Python的模塊及詳解(1)

    psuitil模塊 filecmp模塊 pycurl模塊 一、系統性能信息模塊psuitil psutil是一個跨平臺庫(http://code.google.com/p/psutil/),能夠輕松實現獲取系統運行的進程和系統利用率(包括CPU、內存、磁盤、網絡等)信息。它主要應用于系統監控,分析和限制系統資源及進程的管理。它實現了同等命令行工具提供的功能,…

    2018-01-15
  • lvs-dr實踐-week17

    1、結合圖形描述LVS的工作原理; lvs工作流程: ipvs是工作于input鏈上,監聽目標地址上對應的目標端口,如果這個端口對應的服務定義為集群服務, 就強行修改報文的流程,完成轉發, 通過postrouting送出去, 為了讓后端主機能夠接收, 此時需要讓RS也具有目標ip地址, 要么修改目標ip地址支持基于TCP,UDP,SCTP,AH,EST,AH…

    2017-05-23
  • 第二周總結(文件操作命令、用戶及組權限管理、BASH命令行展開與執行命令返回值、命令別名使用、執行結果引用、通配符使用)

    1、常見文件管理命令分類         1)文件內容查看(cat、tca、more、less、head、tail)         2)文件字符替換(tr、sed、awk等)         3)文…

    Linux干貨 2017-01-31
  • Linux運維學習歷程-第十一天-bash邏輯運算、測試類型和腳本語句

    概述:本篇重點介紹linux當中默認設立了類型,bash的邏輯運算、測試類型和腳本語句,本篇內容極其重要,望小伙伴們在日后的學習中用心學習 一、邏輯運算 變量:   本地變量、環境變量、局部變量、位置參數變量、特殊變量   變量賦值:name=value,export name=value,declare -x nam…

    Linux干貨 2016-08-24

評論列表(1條)

  • luoweiro
    luoweiro 2016-11-29 22:54

    為增加腳本的健壯性,可以在添加用戶或者創建目錄前做以判斷,寫代碼還是要嚴謹一些。

欧美性久久久久