马哥教育网络班22期+第6周课程练习

week6:
请详细总结vim编辑器的使用并完成以下练习题

vim编辑器小结:
	1. vim编辑器的模式:
		vim编辑器有很多模式,常用模式有:Normal,Insert,Command;
		通常,打开一个文件,此时所处的就是normal模式;normal模式下可以浏览,修改文件内容;
		在任何模式下,只要按ESC就可以返回到Normal模式;
		Insert模式则用来编辑文本内容;
		Command模式多用来操作文本文件,如保存文件,改变编辑器本身的状态等;
		模式间的切换:
			Normal ---> Insert
				按键:i,a,o,s,I,A,O,S
			Normal ---> Command
				按键:':'
			Insert/Command ---> Normal
				按键:ESC

	2. vim编辑器的使用:
		2.1 打开一个文件:
		#vim [option] File [...]
			option:
				+NUM:打开文件后,让光标处于第NUM行的行首;不加NUM,直接处于最后一行;
				+/PATTERN:打开文件后,让光标处于第一个被PATTERN模式匹配到的行的行首;
				-b:以二进制方式打开文件;
				-m:只读方式发开文件;
				-d file1 file2 ..:比较多个文件;不加-d,表示打开多个文件;
				-o file1 file2 .. :水平分割方式打开多个文件;
				-O file1 file2 .. :垂直分割方式打开多个文件;

		2.2 关闭文件:
				:q  退出(此时文件内容未发生改变才可以正常退出);
				:q! 强制退出,丢弃做出的修改;
				:wq 保存退出;
				:x  保存退出;
				ZZ  保存退出;
				ZQ   不保存退出;

		2.3 光标移动:
			逐字符移动:
				方向键
				hjkl:左下上右

				备注:支持和数字组合;

			逐单词移动:
				w:移至下一个单词的词首
				e:跳至当前或下一个单词的词尾
				b:跳至当前或前一个单词的词首
				
				备注:支持和数字组合,即6w之类等;

			行内跳转:
				0:跳至绝对行首;
				^:跳至相对行首;
				$:跳至绝对行尾;

			行间跳转:
				G:表示最后一行;
				NG:表示跳转到第N行;(":N")

		2.4 翻屏:	
			ctrl + f:向下翻一屏
			ctrl + b:向上翻一屏

			ctrl + d:向下翻半屏
			ctrl + u:向上翻半屏

	3. 删除:
		x:删除单个字符;
		d[num]w: 删除光标所在处向后的n个单词;
		[num]dd:删除包括光标所处行的n行;没有num的话,删除当前单行;

		:1,3d表示删除1到3行;
			.表示当前行;
			$表示最后一行;
			%表示所有行;
			$-n表示倒数第n行;

	4. 粘贴:
		p: 如果删除或复制为整行内容,则粘贴至光标所在行的下方;如果是非整行,则粘贴至光标所在字符的后面

		P:如果删除或复制为整行内容,则粘贴至光标所在行的上方;如果是非整行,则粘贴至光标所在字符的前面

	5. 复制:
		使用y;用法同d命令;

	6. 撤销编辑与还原:
		u:撤销前一次的操作;
			可连续敲u键撤销此前的n次操作;
		ctrl+r:还原最近一次的撤销操作;

		其它:
			重复前一次的编辑操作可以按'.';
			替换单个字符:先按'r',在按需要替换的字符;

	7. 查找并替换:
		末行模式下使用s命令:
			ADDR1,ADDR2s/pattern/string/[[g][i]]
			示例:
				:.,$-3s/begian/after/gi
					表示从当前行到倒数第三行之间忽略大小写查找begian并替换为after;

		直接查找:
			/pattern:在全文查找匹配到的字符串,按n键会跳到下一个匹配到的字符串;

	8. 和shell交互:
		:! Command

	9. vim设置:
		:set nu 显示行号
		:set nonu 不显示行号
		:set ic 忽略字符大小写
		:set noic 区分字符大小写
		:set ai 设定自动缩进
		:set noai 取消设定自动缩进
		:set hlsearch 高亮显示
		:set nohlsearch 不高亮显示
		:syntax on 语法高亮
		:syntax off 不高亮显示

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
	[root@centos6 ~]# sed -r -i 's/^[[:space:]]+/#&/g' /tmp/rc.sysinit

2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
	[root@centos6 ~]# sed -r -i 's/^[[:space:]]+//g' /tmp/grub.conf

3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
	[root@centos6 ~]# sed -r -i 's/^#[[:space:]]+//g' /tmp/rc.sysinit

4、为/tmp/grub.conf文件中前三行的行首加#号;
	[root@centos6 ~]# sed -i '1,3s/^/#&/g' /tmp/grub.conf

5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
	[root@centos6 ~]# sed -r -i 's/(enabled|gpgcheck)=0/\1=1/g' /etc/yum.repos.d/CentOS-Media.repo 

6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
	
	* */4 * * * /bin/mkdir /tmp/etc-`date +%F%m%d%H%M` && cp -a /etc/* /tmp/etc-`date +%F%m%d%H%M`

7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
	* * * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`

8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
	* */2 * * * /bin/grep ^S /proc/meminfo  >> /stats/memory.txt

9、工作日的工作时间内,每两小时执行一次echo "howdy"
	* */2 * * 0 /bin/echo "howdy"

脚本编程练习
10、创建目录/tmp/testdir-当前日期时间; 
	[root@centos6 ~]# mkdir /tmp/testdir-`date +%Y%m%d`

11、在此目录创建100个空文件:file1-file100 
	[root@centos6 ~]# for i in `seq 1 100`;do touch /tmp/testdir-`date +%Y%m%d`/file${i};done

12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
	[root@centos6 ~]# awk -F':' '{if(NF/2 -eq 0)print $1}' /etc/passwd

13、创建10用户user10-user19;密码同用户名;
	[root@centos6 ~]# for i in `seq 10 19`;do useradd user$i && echo user$i|passwd --stdin user$i;done

14、在/tmp/创建10个空文件file10-file19; 
	[root@centos6 ~]# for i in `seq 10 19`;do touch /tmp/file$i ;done

15、把file10的属主和属组改为user10,依次类推。
	[root@centos6 ~]# for i in `seq 10 19`;do chown user$i.user$i /tmp/file$i;done

原创文章,作者:devon,如若转载,请注明出处:http://www.178linux.com/47837

(0)
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:43

相关推荐

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:58

    所有的crontab都不对,在仔细想想