马哥教育网络班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)
devondevon
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:43

相关推荐

  • lvs实践(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)

    lvs实践(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)   lvs实践(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress) lvs_dr模型 nginx mariadb php-fpm wordpress   lvs实践(lvs+nginx+mariadb+php—f…

    2017-01-03
  • TCP和ARP

    TCP是一个工作在传输层,面向连接的协议,一台计算机与另一台计算机通信就需要TCP协议,当然还有一个和它并列的一个协议可以使用,只是TCP更加稳定且常用. 上图为一台计算机与另一台计算机建立通讯的过程,它实际通信中传递的不止斜线上的信息.上面的SYN是同步号, ACK为确认号.seq为序列号,ack为辅助的确认号 上面为建立通信时发送的TCP信息详细结构,i…

    Linux干货 2017-11-29
  • keepalived+lvs负载均衡两个httpd

    准备4台主机172.16.71.2 172.16.71.3 172.16.71.4 172.16.71.5 前两个做后端httpd服务器。后两个做keepalived 首先配置好后端主机172.16.71.2 和172.16.71.3 # 172.16.71.2yum install httpdcd /var/www/…

    Linux干货 2017-02-13
  • N23-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 [root@localhost ~]# last -1 | head -1 3、取出当前系统上被用户当…

    Linux干货 2016-12-05
  • FHS-文件系统层级结构标准

    文件系统层级结构标准(FHS:Filesystem Hierarchy Standard) 文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容。当前的版本是2.3,在2004年1月29日公布。多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求。然而…

    Linux干货 2016-10-16
  • 实验:LAMP的php模块方式应用phpmyadm和wordpress

    实验:LAMP的php模块方式应用phpmyadm和wordpress 两台主机一台A:httpd,php一台B:mariadb server 1 A:yum httpd php php-mysql vim /etc/php.inidate.timezone = Asia/Shanghai vim /etc/httpd/conf/httpd.conf Dir…

    Linux干货 2017-10-21

评论列表(1条)

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

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