請詳細總結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
crontab的題目都不對,在仔細想想