马哥教育网络班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

相关推荐

  • 优云老王(三)谈埋点:人生处处有埋点

    说到埋点,的确是用户最感兴趣的话题之一,优云Web产品在内测阶段便收到了用户的各种反馈,反复问我无码埋点是怎么做的。在此我专门与大家聊聊埋点以及各种实现方案的利弊。 1、埋点的来历 先说下埋点的来历,其实在互联网没流行起来之前,埋点并不是用来分析用户行为的,技术人员为了解决某些问题,就在代码里面加入了些行为逻辑代码,如果用户使用产品的过程中出了问题,就生成一…

    2016-09-19
  • Linux文本处理工具及组管理

    1、列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,只显示一次即可 [root@centos ~]# who | cut -d' ' -f1 | sort -u     gentoo &…

    Linux干货 2016-10-09
  • 文本处理工具sed、vim

    文本处理工具sed、vim 一、sed的使用 1、sed的概念 sed简单地说sed是一种行处理工具。 sed 是一种流性的行编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末…

    Linux干货 2016-08-11
  • Jmeter性能测试 入门

    Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。 【小坦克Jmeter教程】,将会覆盖Jmeter的各个功能,并且会通过丰富的实例,让读者快速掌握Jmeter的各种用法 。 本文将通过一个实际的…

    Linux干货 2015-03-06
  • sudo——让普通用户更灵活

    sudo命令 1、sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用sudo ,会提示联系管理员 2、sudo可以提供日志,记录每个用户使用sudo 操作 3、sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机 4、sudo 使用时间戳文件来完成类似“检票”的 系统,默认存活期为5 分钟的 “入场券” …

    Linux干货 2016-09-25
  • Linux的软件包管理(RPM)

    软件包管理(RPM)   本章节内容:   软件运行环境   软件包基础  Rpm包管理   一、软件运行环境(了解API和ABI)  API:应用程序开发接口,POSIX国际标准。  程序源代码–> 预处理–> 编译–&…

    Linux干货 2016-08-21

评论列表(1条)

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

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