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

相关推荐

  • 循环结构

    循环结构 循环执行:     讲一段代码重复执行一次或多次          进入条件:条件满足时进入循环     退出条件:每一个循环都应该有退出条件,以有机会退出循环;   &…

    Linux干货 2016-08-21
  • N28-第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
    2、编辑/etc/group文件,添加组hadoop。
    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    9、找出/etc/passwd文件中的一位数或两位数;
    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    2017-12-30
  • 自己做一个CA

    构建CA服务器    CA配置文件位置:        /etc/pki/tls/openssl.cfg           &n…

    Linux干货 2017-04-11
  • 马哥教育网络班21期+第2周课程练习

    一、Linux文件管理类命令     1、文件的复制、移动和删除        A、cp  文件的复制          cp命令的用法:    &n…

    Linux干货 2016-06-26
  • httpd功能配置之访问控制

       httpd服务可以实现对资源访问控制,可以根据IP地址和用户两种方式进行控制。    一、用户认证控制      1、在站点根目录下创建一个目录及一个页面文件      2、修改/var/httpd/conf/httpd.conf文件   &n…

    Linux干货 2016-03-11
  • sed基础

    sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件, 简化对文件的反复操…

    Linux干货 2017-05-01

评论列表(1条)

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

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