網絡班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
下一篇 2016-09-26

相關推薦

  • 創建CA 和申請證書

    創建CA 和申請證書1生成私有CA的私鑰:(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)注:CA的私鑰文件必須放在/etc/pki/CA/private/cakey.pem 這個路徑里2創建序列號 ,數據庫文件touch  /etc/pki/CA/index.tx…

    Linux干貨 2017-07-17
  • 關于大型網站技術演進的思考(十五)–網站靜態化處理—前后端分離—中(7)

    原文出處: 夏天的森林    上篇里我講到了一種前后端分離方案,這套方案放到服務端開發人員面前比放在web前端開發人員面前或許得到的掌聲會更多,我想很多資深前端工程師看到這樣的技術方案可能會有種說不出來的矛盾心情,當我的工作逐漸走向越來越專業化的前端開發后,我就時常被這套前后端分離方案所困惑,最近我終于明白了這個困惑的本源在哪里…

    Linux干貨 2015-03-11
  • 文件的元數據

    2018-03-11

    2018-03-11
  • 第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 發送者:     1)使用單向加密算法提取要發送文件的特征碼;     2)使用自己的私鑰加密特征碼并附加在數據后面;     3)生成用于對稱加密的臨時密碼;     4)用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼; &nb…

    2017-03-20
  • 簡單的文本處理工具和正則表達式

    一、文本工具     在linux中,有很多優秀且功能強大的文本處理工具,對文件內容進行查找、替換、刪除、排序等操作,是linux進行文本處理變得特別方便。日常工作中,經常會用文本處理進行日志分析,文本抽取等,所以掌握文本處理,將會對我們的工作起到極大的作用。 cat:查看文件    &n…

    Linux干貨 2016-08-10
  • Linux系統程序包管理之RPM

    rpm包概述 RPM 是 Red at Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻出來的軟件包管理工具;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版采用。 RPM包里面都包含什么?里面包含可執行的二進制程序,…

    Linux干貨 2016-08-24

評論列表(1條)

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

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

欧美性久久久久