網絡班N22期第六周博客作業

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

打開文件: ~]# vim [options] [file ..]
      +#:打開文件后,直接讓光標處于第#行
      +/PARTTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行
vim有三種模式,分別為:編輯模式(默認打開就是此模式)、輸入模式、末行模式
模式轉換:
    編輯模式(默認打開模式)-->輸入模式,按ESC鍵退回編輯模式
     按i鍵,在光標所在處輸入
       按o鍵,在光標所在處的下方新打開一行
       按a鍵:在光標所在處的后方輸入
       按I:在光標所在處的行首輸入
       按A:在光標所在行的行尾輸入
       按O:在光標所在處的上方打開一個新行
     編輯模式-->末行模式(命令模式,vim內置的命令行),按:鍵,按ESC退回編輯模式
關閉文件:
      ZZ:保存退出
      :q:退出,q!,強制退出
      :wq:保存退出
      :x:保存并退出
      :w /PATH/TO/FILE :另存為
      :r /PATH/FROM/FILE:將指定的文件中的文本讀取并插入至指定位置
光標跳轉:
         字符間跳轉:
              h,l:左,右
              j,k:下,上。(h,l,j,k)#:一次跳轉指定#個字符
         單詞間跳轉
              w:下一個單詞的詞首
              e:下一個單詞的詞尾
              b:當前或前一個單詞的詞首,(w,e,b)#:跳轉#指定個單詞
         行首行尾跳轉
              ^:跳轉至行首的第一個非空白字符
              0:跳轉至行首
              $:跳轉至行尾
         行間跳轉
              #G:跳轉至#指定的行,跳轉至最后一行,G
              gg:跳轉至第1行,或 1G
         句間跳轉
              )
              (
         段間跳轉
              }
              {
 翻屏:
         Ctrl+f:向文件尾部翻一屏
         Ctrl+b:向文件首部翻一屏
         Ctrl+d:向文件尾部翻半屏
         Ctrl+u:向文件首部翻半屏
         Enter:按行向后翻
編輯命令:
         字符編輯
               x:刪除光標所在處的單個字符,#x:刪除光標所在處起始的#個字符
               xp:交換光標所在處的字符與其后面的字符的位置
         替換命令
               r:替換光標所在處的字符,rCHAR,替換成指定的字符
         刪除命令
               d:刪除命令,可結合光標跳轉符實現范圍刪除
               d$:刪除光標所在處至行尾之間的字符
               d^:刪除光標所在處至行首之間的字符
               dw:向后刪除一個單詞
               db:向前刪一個單詞
               de:通dw
               dd:刪除光標所在處的整行,或者#dd,刪除#指定的多少行
         粘貼命令
               p:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方;否則,則粘貼至當前光標所在處的后方;
               P:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方;否則,則粘貼至當前光標所在處的前方;
         復制命令
               y:復制,相似于d命令
               y$
               y^
               ye
               yw
               yb
               yy:復制整行,#yy:復制#行
               cc:刪除光標所在的行,并轉換為輸出模式
         可視化模式
               V:選擇整行
               v:可選單個字符
         撤銷操作
               u:撤銷此前的操作
               #u:撤銷此前的#個操作
               Ctrl+r:撤銷此前的撤銷
               . :重復執行前一個編輯操作(點號)
末行模式:
         地址定界
               #:特定的第#行,例如5即第5行
               #,#:指定行范圍,左側為起始行,右側為結束行
               #,+#:指定行范圍,左側為起始行絕對行號,左側為相對左側行號的偏移量,例如,3,+7,從3行開始往后數7行
               .,$-1:
               1,$:
               %:全文
               /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行
               /pat1/,/pat2/:從光標所在處起始,第一次由pat1所匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行,可以結合 d,y,c命令使用
         查找
               /PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串
               ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串
                       n:下一個
                       N:上一個
         查找并替換:
               s:末行模式的命令,格式:s/要查找的內容/替換為的內容/修飾符
                      要查找的內容:可使用正則表達式
                      替換為的內容:不能使用正則表達式,但可以引用
                      如果“要查找的內容”部分在模式中使用分組符號:在“替換為的內容”中使用后向引用
                      直接引用查找模式匹配到的全部文本,要使用 &符號,例如:%s@\<t[[:alpha:]]\+\>@&er@g
               修飾符:
                      i:忽略大小寫
                      g:全局替換 
多文件編輯功能:
         ~]# vim file1 file2
         在文件間切換
               :netxt 下一個
               :prev 上一個
               :first 第一個
               :last 最后一個
         退出所有文件
               :wqall,保存所有文件并退出
               :wall,保存所有文件
               :qall,退出所有文件
         多窗口
               -o:水平分割窗口
               -O:垂直分割窗口
                   單個文件分割窗口:Ctrl+w,s,水平分割,Ctrl+w,v,垂直分割窗口
定制vim特性
         在末行模式下的設定,僅對當前vim進程有效
         永久有效:
             全局:編輯/etc/vimrc
             個人:~/.vimrc
                1、行號,顯示:set number,簡寫set nu;取消:set nonmber,簡寫set nonu
                2、括號匹配顯示高亮,匹配:set showmatch,set sm;取消:set nosm
                3、自動縮進,啟用:set ai ;禁用:set noai
                4、高亮搜索,啟用:set hlsearch;禁用:set  nohlsearch
                5、語法高亮,啟用:syntax on;禁用:syntax  off
                6、忽略字符大小寫,啟用:set  ic;禁用:set  noic
                獲取幫助:
                  :help,或者:help subject,例如:help  set

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

[root@bogon job]# sed 's@^[[:space:]]\+@#@;w /tmp/rc.sysinit2' /etc/rc.d/rc.sysinit
[root@bogon job]# head -20 /tmp/rc.sysinit2
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#
HOSTNAME=$(/bin/hostname)
set -m
if [ -f /etc/sysconfig/network ]; then
#. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
#HOSTNAME=localhost
fi
if [ ! -e /proc/mounts ]; then
#mount -n -t proc /proc /proc


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

[root@bogon job]# sed 's@^[[:space:]]\+@@;w /tmp/grub.conf' /boot/grub/grub.conf 
# grub.conf generated by anaconda
# #
# # Note that you do not have to rerun grub after making changes to this file
# # NOTICE:  You have a /boot partition.  This means that
# #          all kernel and initrd paths are relative to /boot/, eg.
# #          root (hd0,0)
# #          kernel /vmlinuz-version ro root=/dev/mapper/vg_cactiezv10-LogVol00
# #          initrd /initrd-[generic-]version.img
# #boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CactiEZ (2.6.32-71.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/vg_cactiezv10-LogVol00 rd_LVM_LV=vg_cactiezv10/LogVol00 rd_LVM_LV=vg_cactiezv10/LogVol01 rd_NO_LUKS rd_NO_MD rd_NO_DM.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.el6.x86_64.img
[root@bogon job]# ls /tmp/grub.conf 
/tmp/grub.conf


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

[root@bogon job]# sed -i 's@^#[[:space:]]\+@@' /tmp/rc.sysinit
[root@bogon job]# head /tmp/rc.sysinit 
#!/bin/bash
#
/etc/rc.d/rc.sysinit - run once at boot time
#
Taken in part from Miquel van Smoorenburg's bcheckrc.
#
HOSTNAME=$(/bin/hostname)
set -m


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

1、[root@bogon job]# vim /tmp/grub.conf
2、在vim末行模式下輸入1,3s@^[^[:space:]]\+@#&@g
3、
[root@bogon job]# head -3 /tmp/grub.conf 
## grub.conf generated by anaconda
## #
## # Note that you do not have to rerun grub after making changes to this file


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

1、[root@bogon job]# vim /etc/yum.repos.d/CentOS-Media.repo
2、在vim末行模式下輸入 %s@\(enabled\|gpgcheck\)=0@\1=1@g
3、
[root@bogon job]# tail -5 /etc/yum.repos.d/CentOS-Media.repo
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


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

1、[root@bogon job]# mkdir /backup
2、[root@bogon job]# vim backup.sh
#!/bin/bash
#
DATE=`date +%Y%m%d`
cp -r /etc /backup/etc-$DATE
3、crontab -e
* */4 * * * /bin/bash /root/job/backup.sh > /dev/null
4、手動執行一次腳本
[root@bogon job]# ls /backup/
etc-20151204


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

1、vim backup.sh
#!/bin/bash
#
DATE=`date +%Y%m%d`
cp -a /var/log/messages /backup/messages_log/messages-$DATE
2、crontab -e
* * * * 2,4,6 /bin/bash /root/job/backup.sh > /dev/null
3、手動執行一次腳本
[root@bogon job]# ls /backup/messages_log/
messages-20151204


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

1、crontab -e
2、* */2 * * * /bin/grep '^S' /proc/meminfo >>/stats/memory.txt

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

1、crontab -e
* 9-17/2 * * 1-5 /bin/echo "howdy"

腳本編程練習

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

[root@bogon ~]# date
Wed Dec  2 16:37:55 CST 2015

#!/bin/bash
#
DATE=`date +%Y-%m-%d-%H:%M`
mkdir /tmp/testdir-$DATE

[root@bogon ~]# ls /tmp
etc.test      rc.sysinit  testdir-2015-12-02-16:36  testdir-2015-12-02-16:38
maxusers.txt  test        testdir-2015-12-02-16:37

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

#!/bin/bash
#
for i in {1..100};do
    mkdir ./file$i
done
[root@bogon job]# ls
100.sh   file17  file26  file35  file44  file53  file62  file71  file80  file9   file99
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98

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

1、vim sed.sh
#!/bin/bash
#
sed -n 'n;p' /etc/passwd >>/root/job/pass.txt
cat pass.txt | cut -d: -f1
2、bash sed.sh
[root@bogon job]# bash sed.sh 
bin
adm
sync
halt
uucp
games
ftp
dbus
vcsa
saslauth
rpcuser
haldaemon
sshd
student
rtkit
avahi-autoipd
user12
user13
hello3
user7
user9
user3
user1
hadoop2
hadoop4
hadoop6
hadoop8
hadoop10
user2
slackware
mysql
bash
basher
user14
user17
user19
bin
adm
sync
halt
uucp
games
ftp
dbus
vcsa
saslauth
rpcuser
haldaemon
sshd
student
rtkit
avahi-autoipd
user12
user13
hello3
user7
user9
user3
user1
hadoop2
hadoop4
hadoop6
hadoop8
hadoop10
user2
slackware
mysql
bash
basher
user14
user17
user19

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

#!/bin/bash
#
for i in {10..19};do
   useradd user$i
   echo user$i | passwd --stdin user$i &>/dev/null
done

[root@bogon job]# id user10
uid=5018(user10) gid=5018(user10) groups=5018(user10)
[root@bogon job]# id user11
uid=5004(user11) gid=5004(user11) groups=5004(user11)
[root@bogon job]# id user12
uid=5003(user12) gid=5003(user12) groups=5003(user12)

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

#!/bin/bash
#
for i in {10..19};do
   touch /tmp/file$i
done
[root@bogon job]# ls /tmp
file10  file11  file12  file13  file14  file15  file16  file17  file18  file19

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

#!/bin/bash
#
for i in {10..19};do
   chown user$i:user$i /tmp/file$i
done
~   
[root@bogon job]# ll /tmp/
-rw-r--r-- 1 user10 user10 0 Dec  2 17:01 file10
-rw-r--r-- 1 user11 user11 0 Dec  2 17:01 file11
-rw-r--r-- 1 user12 user12 0 Dec  2 17:01 file12
-rw-r--r-- 1 user13 user13 0 Dec  2 17:01 file13
-rw-r--r-- 1 user14 user14 0 Dec  2 17:01 file14
-rw-r--r-- 1 user15 user15 0 Dec  2 17:01 file15
-rw-r--r-- 1 user16 user16 0 Dec  2 17:01 file16
-rw-r--r-- 1 user17 user17 0 Dec  2 17:01 file17
-rw-r--r-- 1 user18 user18 0 Dec  2 17:01 file18
-rw-r--r-- 1 user19 user19 0 Dec  2 17:01 file19

原創文章,作者:凸b男波萬,如若轉載,請注明出處:http://www.www58058.com/47655

(0)
凸b男波萬凸b男波萬
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:43

相關推薦

  • Linux的文本處理工具及grep正則表達式的使用

    文本處理工具及grep正則表達式的使用 本章節學習的內容: 1、各種文本工具來查看、分析、統計文本文件 2、grep正則表達式 3、擴展正則表達式 一、抽取文本的工具: 1、按文件內容:less和cat 2、按文件截?。篽ead和tail 3、按列抽取:cut 4、按關鍵字抽?。篻rep 二、文件查看命令:cat, tac,rev 1、命令cat: (1)文…

    Linux干貨 2016-08-05
  • Linux發展史

    Linux發展史 摘要:因為學習linux過程中對整個linux發展歷史只有一些模糊的理解,以本文來對linux發展史進行梳理來加深學習。   一、linux是什么 linux就是一套操作系統,如下圖操作系統就是內核與系統調用接口那 Linux只是一套操作系統并不包含其他應用程序。 Linux提供了一個完整的操作系統當中最底層的硬件控制和資源管理的…

    Linux干貨 2016-10-14
  • 磁盤管理、文件系統管理

    磁盤管理、文件系統管理 磁盤管理 磁盤設備 機械硬盤(非固態) I/O Ports —– I/O 設備地址 塊設備:Block 存取單位“塊”;(磁盤) 字符設備:char 存取單位“字符”;(鍵盤) 設備文件:關聯一個設備驅動程序,進而能夠跟與之對應的硬件設備進行通信; – 設備號碼: 主設備號 major number…

    Linux干貨 2016-07-22
  • 20 shell腳本編程1

    20 shell腳本編程1 一、雜項知識整理 1、腳本文件格式:     #!/bin/bash     (注釋信息:)     #description:say hello     #vesion:…

    Linux干貨 2016-08-11
  • 8.9_Linux文本處理三劍客之sed和文本編輯利器vim的使用

    本文處理三劍客之sed的使用   什么是sed? Stream EDitor(簡稱sed), 行編輯器,一次只讀一行,只處理一行,不對源文件做處理,至輸出到屏幕上。 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩…

    Linux干貨 2016-08-11
  • N22-第4周作業-冥界之王

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。    [root@CentOS6 ~]# cp -r /etc/skel/ /home/tuser1/    [r…

    Linux干貨 2016-09-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-27 09:44

    crontab的題目都不對,在仔細想想

欧美性久久久久