N25第六周 vim,crontab命令的使用

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

vim是一款功能强大的文本编辑器,是程序员的必备神器。



vim工作模式分为三种:编辑模式,输入模式,末行模式,三种工作模式可以进行来自由切换
    编辑模式---》输入模式: 直接键i 
    输入模式---》编辑模式: Esc
    编辑模式---》末行模式: Ctrl+:
    末行模式---》输入模式: 无法直接切换,需要经由编辑模式切换。

    编辑模式下命令:
    a:光标跳至行尾进入输入模式;
    h:向左移动;
    l:向右移动;
    j:向下移动;
    J:把下行移动到光标所在行行尾;
    K:向上移动;
    g: gg---跳转是第一行;
    G: 跳转至末行:
       #G---跳转至指定行;
    w: 跳至下个单词词首;
    b: 跳至上个单词词首;
    e: 当前或下个但是词尾;
    o: 在光标所在行下行插入空白行并切换至输入模式;
    O:在光标所在行上行插入空白行并切换至输入模式;
    P: 粘贴命令,在光标所在行下一行粘贴已复制的内容;
    P: 粘贴命令,在光标所在行下一行粘贴已复制的内容;
    x: 直接删除光标所在的字符;
    X: 删除光标所在字符的上个字符;
    r: replace, 以新字符取代光标所在的字符,按r后输入新字符;
    u: 撤销此前的操作;
    U: 撤销“撤销”操作;
    d: 配合其他键使用
       dd---直接删除所在行;
       dw---删除光标所在的单词;
       d$---删除光标至行尾的字符串;
       d^---删除光标至行首的字符串;
    y: 与d键使用方法类似
       yy---复制光标所在行;
       yw---复制光标所在的单词;
       y$---复制光标至行尾的字符串;
       y^---复制光标至行首的字符串;

    v: visual 类似是鼠标移动选定文本功能,配合h,j,k,l键使用可以上下左右选定文本;

    c: 与d键用法类似,不同的是其执行命令完后切换至输入模式;
    ^: 光标跳至行首;
    $: 光标跳至行尾;
    Z:ZZ---保存文本并退出vim;   

对文本进行翻屏: 
    向前翻一屏:ctrl+f;
    向后翻一屏:ctrl+b;
    Enter      : 向后按行翻屏
    向前翻半屏:ctrl+u; 
    向后翻半屏:ctrl+d;

输入模式下命令:与普通的输入模式无异。

末行模式:
     q!:不保存退出 vim;
     wq: 保存文件并退出;
     w:  w /path/to/somewhere/filename, 当前文件保存至指定路径下;

 对文本指定的行进行定位:
      #1,#2: #1---开始的行号
               #2---结束的行号
               可以对此区间的行进行删除复制等操作:例如,3,5y 表示复制3行至5行的内容
       #,$:指定行至文本行尾;
      %:文本全文;

 对文本内容进行替换处理:
     #1,#2 s/原内容/新内容/g
            原内容:支持正则表达式;
            新内容:不支持正则表达式,但是可以使用&代替原内容; 



 在末行模式下可以对vim特性进行设置:
     set number: 显示行号;
     set number: 不显示行号;
     set hlsearch: 高亮显示匹配结果;
     set nohlsearch: 不高亮显示皮别结果;
     set ai        :  自动缩进;
     set no ai     :  不自动缩进;
     syntax on     : 语法检查开启;
     syntax off    : 语法检查关闭

    注意:此配置仅对当前编辑有效,如需要全局有效则在 /etc/vimrc 中进行配置。

vim支持同时打开多个文件:
        vim /path/to/somewhere/filename1 /path/to/somewhere/filename2. 
        当filename不存在时 系统将自动建立文件.。
    支持多窗口:
        水平:vim -o /path/to/somewhere/filename1 /path/to/somewhere/filename2       
        垂直:vim -O /path/to/somewhere/filename1 /path/to/somewhere/filename2

    各窗口间切换: ctrl+w+箭头;


  通知单文件也支持多窗口:

        ctrl+W,S 水平窗口
        ctrl+w,v 垂直窗口

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;

 复制:cp /etc/rc.d/rc.sysinit /tmp

 打开:vim /tmp/rc.sysinit.

 切换至末行模式: %s@^[[:space:]]\+.*@#&@

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

 复制: cp /boot/grub/grub.conf  /tmp

 打开: vim /tmp/grub.conf

 切换至末行模式:  %s#^[[:space:]]##

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

  打开: vim /tmp/rc.sysinit

  末行模式下: %s@^#\+[[:space:]]\+@@

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

  打开: vim  /tmp/grub.conf

  末行模式下: 1,3s/^/#&/

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

    [c6-media]
    name=CentOS-$releasever - Media
    baseurl=file:///media/CentOS/
            file:///media/cdrom/
            file:///media/cdrecorder/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    ~                                                                                                                                              
    ~                                                                                                                                              
    ~                                                                                                                                              
    ~                                                                                                                                              
    ~                                                                                                                                              
    ~                                                                                                                                              
    ~                                                                                                                                              
    ~                                                                                                                                              
    :%s@\(enabled\|gpgcheck\)=0@\1=1@

6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202

   [root@localhost spool]# crontab -l

   0 */4 * * * /bin/cp -r /etc /backup/etc-$(date +\%Y\%m\%d\%H\%M)


   注意:%在crontab有特殊含义必须使用转义字符。

7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402

 [root@localhost spool]# crontab -u admin -l

 0 12 * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages_$(date +\%Y\%m\%d)

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

  [root@localhost spool]# crontab -l

  0 */2 * * * /bin/cat /proc/meminfo | /bin/grep "^S.*" >/stats/memory.txt

  注意:memory.txt文件必须事先创立,否则任务执行会失败。

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

[root@localhost ~]# crontab -l

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

脚本编程练习

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

[root@localhost tmp]# cat /tmp/scripts1.sh #!/bin/bash mkdir /tmp/testdir-$(date +%F%H%M)

[root@localhost tmp]# ./scripts1.sh
[root@localhost tmp]# ls -l | grep testdir
drwxr-xr-x. 2 root  root   4096 Dec 27 07:01 testdir-2016-12-270701
drwxr-xr-x. 2 root  root   4096 Dec 27 07:03 testdir-2016-12-270703
drwxr-xr-x. 2 root  root   4096 Dec 27 07:09 testdir-2016-12-270709
[root@localhost tmp]#

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

   #! /bin/bash

   for i in {1..100};do
      touch ./file$i
      done
      echo "100 files completely created"


    [root@localhost tmp]# bash scripts2
    100 files completely created
    [root@localhost tmp]# ls -l ./
    total 260
    -rwsr-xr-x. 1 root  root  48568 Dec 26 00:40 cat
    -rw-------. 1 root  root     87 Dec 27 06:36 crontab.hpk75h
    -rw-------. 1 root  root     56 Dec 27 06:35 crontab.YLrMNM
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file1
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file10
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file100
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file11
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file12
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file13
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file14
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file15
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file16
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file17
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file18
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file19
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file2
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file20
    -rw-r--r--. 1 root  root      0 Dec 27 08:12 file21

  限于篇幅只截取部分显示内容。

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

   [root@localhost ~]# cat /tmp/scripts3
    #!/bin/bash
    sed -n '2~2p' /etc/passwd |cut -d: -f1
    [root@localhost ~]# bash  /tmp/scripts3
    bin
    bash
    nologin
    user1
    user10
    user12
    user14
    user16
    user18
    user20
    user22
    user24
    user26
    user28
    [root@localhost ~]#

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

    [root@localhost tmp]# cat /tmp/scripts4
    #!/bin/bash

    for i in {20..29};do
        if ( id user$i &> /dev/null); then
           echo "user exits"
        else useradd user$i && echo "user$i" | passwd user$i --stdin 
        fi
    done
       echo "ten users added completely"


   [root@localhost tmp]# bash scripts4
    Changing password for user user20.
    passwd: all authentication tokens updated successfully.
    Changing password for user user21.
    passwd: all authentication tokens updated successfully.
    Changing password for user user22.
    passwd: all authentication tokens updated successfully.
    Changing password for user user23.
    passwd: all authentication tokens updated successfully.
    Changing password for user user24.
    passwd: all authentication tokens updated successfully.
    Changing password for user user25.
    passwd: all authentication tokens updated successfully.
    Changing password for user user26.
    passwd: all authentication tokens updated successfully.
    Changing password for user user27.
    passwd: all authentication tokens updated successfully.
    Changing password for user user28.
    passwd: all authentication tokens updated successfully.
    Changing password for user user29.
    passwd: all authentication tokens updated successfully.
    ten users added completely
    [root@localhost tmp]# cat /etc/passwd | tail
    user20:x:517:517::/home/user20:/bin/bash
    user21:x:518:518::/home/user21:/bin/bash
    user22:x:519:519::/home/user22:/bin/bash
    user23:x:520:520::/home/user23:/bin/bash
    user24:x:521:521::/home/user24:/bin/bash
    user25:x:522:522::/home/user25:/bin/bash
    user26:x:523:523::/home/user26:/bin/bash
    user27:x:524:524::/home/user27:/bin/bash
    user28:x:525:525::/home/user28:/bin/bash
    user29:x:526:526::/home/user29:/bin/bash

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

    #!/bin/bash
        for i in {10..19};do
             touch /tmp/file$i
        done
        echo " ten files completely created "
    ~                                                                                                                                              
    ~                              

   [root@localhost tmp]# bash scripts5
   ten files completely created

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

    #!/bin/bash
       for ((i=10;i<=19;i++));do
              chown user$i:user$i file$i
            ls -l /tmp/file$i
            done
       echo " changing the owner of files completed " 
    ~                                                                                                                                              

    [root@localhost tmp]# bash  scripts6
    -rw-r--r--. 1 user10 user10 0 Dec 27 11:53 /tmp/file10
    -rw-r--r--. 1 user11 user11 0 Dec 27 11:53 /tmp/file11
    -rw-r--r--. 1 user12 user12 0 Dec 27 11:53 /tmp/file12
    -rw-r--r--. 1 user13 user13 0 Dec 27 11:53 /tmp/file13
    -rw-r--r--. 1 user14 user14 0 Dec 27 11:53 /tmp/file14
    -rw-r--r--. 1 user15 user15 0 Dec 27 11:53 /tmp/file15
    -rw-r--r--. 1 user16 user16 0 Dec 27 11:53 /tmp/file16
    -rw-r--r--. 1 user17 user17 0 Dec 27 11:53 /tmp/file17
    -rw-r--r--. 1 user18 user18 0 Dec 27 11:53 /tmp/file18
    -rw-r--r--. 1 user19 user19 0 Dec 27 11:53 /tmp/file19
     changing the owner of files completed 
    [root@localhost tmp]# vim scripts6

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

(0)
diglinuxdiglinux
上一篇 2016-12-29
下一篇 2016-12-29

相关推荐

  • iptables练习

    iptables实战 1.开启防火墙 systemctl start firewalld 2.清空所有的默认规则,定义自己的规则 iptables -F 查看此时的iptables iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD…

    2017-06-24
  • 用户与组管理

    如何成为linux用户?     在linux系统中,要想从系统中获取资源、对系统进行管理和控制,就需要向系统申请一个账号,从而实现特定用途,当申请到账号后,要对它设置口令,这样用户账号就申请成功了,然后可以登陆系统,当用户登陆系统时,需要通过系统的认证,认证成功后才给予授权,在用户的使用过程中还会对用户进行审计。 为什么要设置…

    Linux干货 2016-08-08
  • 初学linux遇到的问题

    1 su uername 显示的是基本格式,不是类似于[root@Centos7 ~]#,看着不知道进入到哪个目录。解决办法:在家目录下使用ls -a命令显示隐藏文件,使用nano .bash_profile命令,在那里编辑PS1=”[\u@\h \W]\\$”保存退出就好了。 疑问:为什么不在/etc/bashrc下更改呢?自答:改…

    Linux干货 2017-07-15
  • N25第一周博客作业

    本文主要阐述了以下几个知识点: l  计算机的组成及功能; l  介绍各不同发行版的linux及其联系; l  描述linux的哲学思想,及其本人对其个人理解; l  介绍一些linux基本命令及相关选项; l  如何在linux上使用帮助命令; l  罗列出发行版linux上的一些基础目录及其功用…

    Linux干货 2016-11-29
  • linux中的管道符

    管道符 less只能看文件 但是这样做会产生一个垃圾文件ls.txt,所以下面我们就会需要用到管道符 |只将传递正确结果传递给 而使用这两种方法可以传递正确和错误的结果[root@localhost ~]# ls /etc/passwd /cpp/passwd 2>&1|less   ,  (2>&1…

    2017-07-22
  • N25 – 第一周博客作业

      1. 描述计算机的组成及其功能2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别3. 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述4. 说明Linux系统上命令的使用格式;详细介绍ifconfig,echo,tty,startx,export,pwd,history,sh…

    Linux干货 2016-11-28