N22-第6周作业-冥界之王

请详细总结vim编辑器的使用并完成以下练习题
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
 

  [root@CentOS6 /]# cp /etc/rc.d/rc.sysinit /tmp
   [root@CentOS6 tmp]# cat rc.sysinit | sed   's/^[[:space:]]/#/g'

2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

   [root@CentOS6 tmp]# cat grub.conf | sed 's/^[[:space:]]//g'

3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符;

   [root@CentOS6 tmp]# sed 's/^#[[:space:]]\+//g' /tmp/rc.sysinit

  4、为/tmp/grub.conf文件中前三行的行首加#号;

   在vim的命令模式下,也就是按下esc键 

:1,3s/^/#&/g

5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
  

  :%s/=0/=1/g

6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
   编写备份脚本 /tmp/backup.sh,之后chmod +x /tmp/backup.sh

   #!/bin/bash
   mkdir -p /backup/etc-`date +%Y%m%d%H%M`
   cp -r /etc/* /backup/etc-`date +%Y%m%d%H%M`
   crontab -e编辑,设置执行周期
   * */4 * * *  cp -r /etc/* /backup/etc-`date +%Y%m%d%H%M`

7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
    在 /etc/crontab 文件中添加如下该行
  

  * * * * 2,4,6 /bin/tar -cf /backup/messages_logs/messages-`date +%Y%m%d` /var/log/messages

8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
     在 /etc/crontab 文件中添加如下该行
   

  * */2 * * * /bin/grep '^S' /proc/meminfo >> /stats/memory.txt

9、工作日的工作时间内,每两小时执行一次echo ""howdy""
    在 /etc/crontab 文件中添加如下该行
   

* 9-18 * * 1-5 /bin/echo "howdy"

脚本编程练习

10、创建目录/tmp/testdir-当前日期时间;
 

 [root@CentOS6 tmp]# mkdir -p /tmp/testdir-`date +%F-%H:%m:%S`

11、在此目录创建100个空文件:file1-file100
 

   #!/bin/bash
      for((i=1;i<=100;i++)) do
         cd `pwd`
         touch file$i
      done

12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
   

[root@CentOS6 ~]# cat -n  /etc/passwd | awk -F " " '{if($1%2==0) {print $2}}' | awk -F ":" '{print $1}'

13、创建10用户user10-user19;密码同用户名;
   

 #!/bin/bash
     for((i=10;i<=19;i++)) do
        useradd user$i
        echo "user$i" | passwd --stdin user$i
     done

14、在/tmp/创建10个空文件file10-file19;
 

   #!/bin/bash
    for((i=10;i<=19;i++)) do
       cd /tmp
       touch file$i
    done

15、把file10的属主和属组改为user10,依次类推。

#!/bin/bash
 for((i=10;i<=19;i++)) do
       cd /tmp
       chown -R user$i:user$i file$i
 done
 vim的使用

 Vim/Vi简介

1、Vim/Vi 是一个文本编辑器,多适用在Linux/UNIX系统;早期是Vi,现在增强版是Vim,但使用的还是Vi的操作。
2、Vim/Vi 没有菜单,只有命令。
3、作用:建立、编辑、显示文本文件。
常用操作
1、Vi有三种工作模式:命令模式、插入模式、编辑模式。
Insert    Edit
2、格式:vi + 文件名
说明:如果是已存在此文件,表示打开;如果不存在此文件,表示新建。
3、三种模式的相互切换
3.1        默认进入"命令模式"
3.2        插入模式:        在命令模式下–>进入"插入模式",输入 i                注:一般下面会提示有–INSERT–
退出"插入模式",按ESC键
常用选项:aio
a        在光标后插入文本,        A        在本行行末插入文本;
i        在光标前插入文本,        I        在本行开始插入文本;
o        在光标下插入新行,        O        在光标上插入新行;
3.3        编辑模式:        在命令模式下–>进入"编辑模式",输入:
退出"编辑模式",回车        (其实执行完命令也即进入命令模式了)
常用选项:set number        使文件显示行号(number也可简写成nu)
3.4        命令模式常用命令
***定位***
h        (等同于方向左键)左移一个字符
j        (等同于方向下键)下移一行
k        (等同于方向上键)上移一行
l        (等同于方向下键)下移一行
$        移至行尾
0        移至行首
H        移至屏幕上端(High)
M        移至屏幕中央(Middle)
L        移至屏幕下端(Low)
:set nu        设置行号        //nu是number的简写
:set nonu      取消行号        //no-number
gg              到第一行
G                到最后一行
nG              到第n行                //n是自己输入的行号
:n              到第n行                //与nG作用一样
***删除***
x                  删除光标所在处字符
nx                删除光标所在处后n个字符
dd                删除光标所在行
ndd                删除光标后的n行                //注:光标所在的行也算一行
D                  删除光标所在处到行尾
dG                删除光标所在行到末尾的内容
:n1,n2d          删除指定范围的行,将n1行到n2行删除
eg,:12,15d        //作用是删除12到15行
***复制/剪切***
yy              复制当前光标所在行
nyy                复制当前光标所在以下n行
dd                剪切当前光标所在行(也可以用作删除)
ndd              剪切当前光标所在行以下n行        //注:光标所在的行也算一行
p                粘贴在当前光标所在行下
***替换/取消***
u              返回上一次操作(无限制的返回,前提没有在中途保存)
r                取代光标所在处字符
R                从光标所在处开始替换字符,按Esc结束,不然一直替换后面的字符
***搜索/替换***
/字符串                        从光标处开始搜索要查找的字符串
n                              (next)搜索指定字符串时,按n键跳到下一个符合的字符串
:%s/old/new/g                全文中的字符串old全部替换成new,注意格式,只需改old,new,其他一样
:n1,n2s/old/new/g        将n1行到n2行中所有的old都替换成new
:s/old/new/g                将光标所在行的所有old都替换成new
3.5        保存/退出 :        在命令模式下–>输入  :w                保存(不退出)
:w + 文件路径    另存为
eg::w /work/dir/newfile    注:把当前文件另存为newfile
:wq                保存并退出
:q                退出(用于没有未更改)
:q!              退出不保存(用于文件已更改)
4、常用快捷键
shift + zz        保存并退出        (在命令行模式下)
5、小技巧
:r + 要导入的文件路径                                作用:可以把文件导入到该文件所指光标处
:! + 进行一些非Vi指令的操作。 如:ls查看其他目录,date查看日期,等一系列文件操作命令
:r + !+ 进行一些非Vi指令的操作结果                作用:其他指令的操作结果写入到当前文件所指光标处 (不错!)
eg:r !date        //把当前查询的日期写入到当前文件
6、多文件编辑
使用命令vim name1 name2 name3…(各个文件名之间用空格隔开)可以同时打开多个文件。
:n                编辑下一个文件;
:N                编辑上一个文件;
:files          列出目前vim打开的所有文件
7、块选择
选取部分内容进行复制粘贴删除很方便(不是以行为单位操作)
v        字符选择(输入v后,下面窗口提示"可视",也即选中了第一个字符,按方向左右键继续选择)
V        行选择
y        复制选中的内容
p      粘贴选中的内容
d        删除选中的内容
8、Vim/Vi的配置(让其显示行号,tab键=4)
方法:
1)在用户目录下(cd/或者cd~都能进到用户目录)/home/usr
2)建立一个vimrc的文件(最好隐藏)
vi .vimrc
3)进行编辑,输入内容
set nu                        //作用:让Vi/Vim打开的文件都能显示行号
set tabstop=4                //作用:在Vi/Vim编辑器,让tab跳至4个间距

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

(0)
上一篇 2016-09-19 13:47
下一篇 2016-09-19 13:47

相关推荐

  • 马哥教育网络班21期-第三周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who|cut -d" " -f1|uniq -c|awk '{print $2}' 2、取出最后登录到当前系统的用户的相关信息。 last |awk 'NR==1{print $0}' last |sed -n &…

    Linux干货 2016-07-29
  • N26-博客作业-week15

    1、总结sed和awk的详细用法 sed: 语法结构 sed [OPTION]…’script’ [input-file]…[action] -r:支持扩展正则表达式 -n:不输出模式空间中的内容至屏幕 -e script1 -e script2 -e script3:指定多脚本运行 -f /path/to/script_file:从指定的文件中读取…

    Linux干货 2017-07-14
  • n25第二周

    linux文件管理类命令     mkdir,rmdir,cp,mv,rm,chwon,chmod     1.mkdir->make directories(创建目录)     用法:    &nbsp…

    Linux干货 2016-12-11
  • 安装centos7

    在vmware安装centos7

    2018-03-26
  • N25第二周视频作业:用户、组与权限管理详解

    此篇博客是根据视频要求写的,因为马哥在视频中说了,用户组、权限在linux运维过程中比较重要,所以一定要深入学习 首先,先介绍一下用户、组与权限是什么:     用户:用户时指你在服务器上的标识,通过不同类型的用户,你享受到不同的待遇,而待遇就是权限的大小。每个用户在服务器上都有唯一的id标识,即使你将此用户删除,再建…

    Linux干货 2016-11-26
  • Python基础篇之过程型程序设计

    一、Python过程型程序设计 面向过程 以指令为中心,由指令处理数据 如何组织代码解码问题 面向对象 以数据为中心,所有的处理代码都围绕数据展开 如何设计数据结构组织数据,并提供对此类数据所允许处理操作 简单方法: 1)、编译安装新版本至某特定路径 # yum install readline-devel # tar xf Python-2.7.6.tar…

    2018-01-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-19 19:03

    所有的crontab都不对,看我群里的解答,vim的格式注意下,不是太漂亮