馬哥教育網絡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
下一篇 2016-08-05

相關推薦

  • Linux發展史

    日期:2016-10-12  Bell,MIT與GE的『Multics』系統     早期的計算機還很不普遍,除非是軍事或者高科技用途,或者學術單位的學術研究,否則真的很難接觸到。而且計算機架構很難使用。那個時候,程序設計者必須先將程序相關的信息在讀卡紙上面打洞然后將讀卡紙插入卡片閱讀機來將信息讀入主機中運算…

    Linux干貨 2016-10-14
  • 8-2 作業

    8-2作業     1.在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 2.創建組sales,gid 3000,passwd:centos,sales admins:user2?!?/p>

    Linux干貨 2016-08-05
  • N29 第一周作業

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    Linux干貨 2018-03-05
  • Linux軟件包安裝

    Linux系統和Windows系統在軟件包安裝上區別很大:     軟件運行環境:         API: Application Programming Interface    POSIX: P…

    Linux干貨 2016-08-21
  • Linux命令格式及基礎命令使用

    Linux命令格式command [選項] [參數]其中 選項 以 – 開始,多個選項可用一個-連起來,如ls -l -a 與ls -la相同。根據命令的不同,參數分為可選的或必須的。ifconfig格式:ifconfig [網絡設備] [參數]命令功能:命令用來查看和配置網絡設備。當網絡環境發生改變時可通過此命令對網絡進行相應的配置。示例 :i…

    Linux干貨 2018-03-03
  • N22-第七周作業

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@localhost ~]# fd…

    Linux干貨 2016-10-07

評論列表(1條)

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

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

欧美性久久久久