馬哥教育網絡21期+第六周練習博客

馬哥教育網絡21期+第六周練習博客

請詳細總結vim編輯器的使用并完成以下練習題
    VIM編輯器:
        vi:Visual Interface 文本編輯器
        文本數據:純ASCII或Unicode
文件編輯器種類:
    行編輯器:sed
    全屏編輯器:nano
vim:模式化編輯器
    常用模式:
        編輯模式-->命令模式
        輸入模式
        末行模式:內置的命令行接口

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

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

模式之間的互相轉換:
    輸入模式-->編輯模式-->ESC
    編輯模式-->末行模式-->:
    末行模式-->編輯模式-->:ESC

關閉并退出:
    :q 退出
    :q!強制退出
    :wq保存退出
    :x 保存退出
    :w /PATH/TO/保存在指定文件

光標跳轉:
    字符間的跳轉:
    h:左
    l:右
    j:下
    k:上

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

單詞間進行跳轉:
    w:跳至下個單詞的詞首
    e:跳轉至下一個單詞的詞尾
    b:跳至當前詞的詞首

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

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

行間移動:
    #G:跳轉至由#指定行;
    G:最后一行;
    1G或gg:第一行;
句間移動:
    (或)
段落件移動:
    {或}

VIM的編輯命令:

字符編輯:
x:刪除光標處單個字符:
#x:刪除光標所在處起始的#個字符;
xp:交換光標所在處的字符及其后面字符的位置;

刪除命令:
d:刪除命令,可結合光標跳轉字符,實現范圍刪除;
例如:d$,d^,d0
dd:刪除光標所在的行;
    #dd:多行刪除;

粘貼命令:
P:緩沖區中存儲的如果為正行內容,則粘貼當前所在行的下方,否則粘貼至當前光標所在處的后面;
P:緩沖區中存儲的如果為整行內容,則粘貼當前所在行的上方:否則粘貼至當前光標所在處的前面

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

改變命令:
c:修改
編輯模式-->輸入模式
    c$:行尾修改從光標所在地刪除行尾;
    c^:行首修改從光標所在地刪除行首;
    c0:行首修改從光標所在地刪除行首;
    cb:修改指定單詞;
    ce:
    cw:

其他編輯操作:

可視化模式;
    v:按字符選定;
    V:按行選定;
?經常結合編輯命令?

撤銷此前的編輯:
    u:撤銷此前的操作;
    #u:撤銷指定次數的操作;

撤銷此前的撤銷:
    Crtl+r

翻屏操作:
    Crtl+f:向文件尾部翻一屏;
    Ctrl+b:向文件首部翻一屏;
    Crtl+d:向文件尾部翻半屏;
    Crtl+u:向文件首部翻半屏;

vim中的末行模式:

內置命令行接口
(1)地址定界-->:start_pos,end_pos
#:具體第#行,例如2,100;
#,#:從左側#表示行起始,到右側#表示行結尾:
#,+#:1,+3:從左側#表示的行起始,加上右側#表示的行數:
.:當前行:
$:最后一行:
%:全文,相當于1,$

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

使用方式:

后跟一個編輯命令:
    d:在指定輸出后進行刪除;
    w /PATH/TO/SOMEWHERE:將范圍內的行另存至指定文件中;
    r /PATH/FROM/SOMEFILE: 在指定位置插入指定文件中的所有內容;

(2)查找:
    /PATTERN:從當前光標所在處向文件尾部查找
    ?PATTERN:從當前光標所在處向文件首部查找:
        n:與命令同方向:
        N:與命名反方向:

(3)查找并替換:
    s:在末行模式下完成查找替換操作
    s/要查找的內容/替換為的內容/修飾符
        要查找的內容:可使用模式
        替換為的內容:不能使用模式,但可以使用\1,\2...等后向引用符號,還可以使用“&”引用前面查找時查找到的整個內容:
        修飾符:
            i:忽略大小寫
            g:全局替換:默認情況下,每一行只替換第一次出現:
            查找替換中的分隔符/可替換為其他字符,例如:
            s@@@
            s###

vim的多文件模式:

vim FILE1 FILE2 FILE3 ...
    :next 下一個;
    :prev 前一個;
    :first 第一個;
    :last 最后一個;
    :wall 保存所有;
    :qall 退出所有;

窗口分割模式:

vim -o | -O FILE1 FILE2...
    -O:垂直分割
    -o:水平分割
    在窗口間切換:Ctrl+w,箭頭向下的箭頭
單文件窗口分割:
    Ctrl+w,s :split,水平分割;
    Ctrl+w,v:vertical 垂直分割;

定制VIM的工作特性:

配置文件:
    全局:/etc/vimrc
    個人:~/.vimrc
末行:當前vim進程有效
    (1)顯示或取消行號
        set number,簡寫為set nu
        取消顯示:set nonumber,簡寫為set nonu
    (2)括號匹配
        匹配:set showmatch ,簡寫為set sm
        取消:set nosm
    (3)自動縮進
        啟用:set ai
        禁用:set noai
    (4)高亮搜索
        啟用:set hlsearch
        禁用:set nohisearch
    (5)語法高亮
        啟用:syntax on
        禁用:syntax off
    (6)忽略字符的大小寫
        啟用:set ic
        不忽略:set noic

獲取幫助:
    :help 
    :help subject

練習:

1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
[root@wanghongkai ~]# cp /etc/rc.d/rc.sysinit /tmp/
[root@wanghongkai ~]#  sed 's/^[[:space:]]\+/#/' /tmp/rc.sysinit


2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
[root@wanghongkai ~]# cp /boot/grub/grub.conf /tmp
[root@wanghongkai ~]# sed 's/^[[:space:]]\+//' /tmp/grub.conf


3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符;
[root@wanghongkai ~]# sed 's@^#[[:space:]]\+@@' /tmp/rc.sysinit


4、為/tmp/grub.conf文件中前三行的行首加#號;
[root@wanghongkai ~]# sed 1,3's/^/#/' /tmp/grub.conf


5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
[root@wanghongkai ~]#sed 's/=0/=1/' /etc/yum.repos.d/CentOS-Media.repo

6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202;
[wostop@wanghongkai ~]$ crontab -l
0 */4 * * * cp -ri /etc /backup/etc-'date +%Y%m%d'


7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402;
[wostop@wanghongkai etc]$ crontab -l
1 * * * 2,4,6 cp -r /var/log/messages /backup/messages_logs/messages-`date +%F%T`


8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中;
[wostop@wanghongkai etc]$ crontab -l
0 */2 * * * egrep "^(S|s)" /proc/meminfo >> /stats/memory.txt



9、工作日的工作時間內,每兩小時執行一次echo "howdy";
[wostop@wanghongkai etc]$ crontab -l
0 */2 * * 1,2,3,4,5 echo "howdy"

腳本編程練習

10、創建目錄/tmp/testdir-當前日期時間;
#!/bin/bash
mkdir /tmp/testdir-`date +%F%T`


11、在此目錄創建100個空文件:file1-file100;
#!/bin/bash
#
for i in {1..100};do
    mkdir /tmp/file$i &> /dev/null
done


12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
#!/bin/bash
#
sed -n 'n;p' /etc/passwd | cut -d':' -f1

[root@wanghongkai ~]# ./1.sh 
bin
adm
sync
halt
uucp

13、創建10用戶user1-user10;密碼同用戶名;
#!/bin/bash
#
for i in {1..10};do
    if id user$i $> /dev/null;then
       echo "user$i cunzai."
    else
        useradd user$i && echo "user$i" | passwd --stdin user$i
    fi
done
echo "YONGHU user$i JIANLI"


14、在/tmp/創建10個空文件file10-file19;
[root@wanghongkai ~]# cat 1.sh 
#!/bin/bash
#
for i in {10..19};do
    mkdir -p /tmp/file$i
done


15、把file10的屬主和屬組改為user10,依次類推。
[root@wanghongkai ~]# cat 1.sh 
#!/bin/bash
#
for i in {11..19};do
    chown user$i /tmp/file$i && chgrp user$i /tmp/file$i
done

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

(0)
wostopwostop
上一篇 2016-08-05 16:15
下一篇 2016-08-05 16:15

相關推薦

  • 文件系統磁盤管理上

    磁盤:主要作用用于存儲數據 早期一塊硬盤共有256個盤面,每個盤面有1024個磁道,每個磁道有63個扇區,每個扇區的大小是512byte 硬盤的命名: 早期IDE硬盤標記為hd scsi、usb、sas標記為sd 引用設備的方式 設備文件名 標卷 UUID 硬盤分區: 第0個磁道的第0個扇區存放的是磁盤的信息 MBR:Master Boot Record 主…

    Linux干貨 2016-08-30
  • 第五周作業

    1、顯示當前系統上root,fedora或user1用戶的默認shell。 [root@hostname ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 root:/bin/bash 2、找出/etc/rc.d/init.d/functions文件中某詞后面跟一組小括號的行,形如:…

    Linux干貨 2017-08-04
  • vim編輯器

    vim編輯器三種模式轉換 G跳到尾行 gg:跳到首行 H:跳到當前頁的首行 L: 跳到當前頁的尾行 M: 跳到當前而的中間行 dd: 刪除光標所在的行 #dd:多行刪除 yy:復制行 #yy: 復制多行 ? Y: 復制整行 cc:刪除當前行并輸入新內容 #cc:刪除多行 C:刪除當前光標到行尾,并切換成插入模式 修改配置文件 全局: /etc/vimrc 用…

    2017-08-05
  • 數據庫的備份和恢復

    數據庫的備份和恢復 一 (理論篇)、數據庫備份與恢復基礎 1、數據庫的備份與恢復 備份:存儲的數據副本; 原始數據:持續改變; 恢復:把副本應用到線上系統; 僅能恢復至備份操作時刻的數據狀態; 時間點恢復: binary logs; 2、為什么備份? 災難恢復: 硬件故障(冗余)、軟件故障(bug)、自然災害、黑客攻擊、誤操作、…&nb…

    2016-11-22
  • vsftpd 配置文件的一些設置

    ftp:File Transfer protocol 文件傳輸協議 兩個連接: tcp:命令連接 tcp:數據連接 主動模式:服務器端通過20端口主動連接客戶端,客戶端監聽在于服務器端的建立連接的端口+1上,服務器工作在tcp/20 被動模式:客戶端使用自己與服務器端建立端口+1上連接客戶端的隨機端口 防火墻上連接追蹤 數據要流失化文本:文件流二進制 c/s…

    Linux干貨 2017-09-10
  • N22-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 # who|cut -d' ' -f1|sort|uniq # root 2、取出最后登錄到當前系統的用戶的相關信息。 # last|head -n 1 # …

    Linux干貨 2016-08-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-17 15:35

    寫的很好,排版也很棒,加油,7不對

欧美性久久久久