请详细总结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.178linux.com/47655
评论列表(1条)
crontab的题目都不对,在仔细想想