马哥教育网络班22期-第6周博客作业

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

[root@centos6 ~]# cp /etc/rc.d/rc.sysinit /tmp/
[root@centos6 ~]# sed -i 's/^[[:space:]]/#/' /tmp/rc.sysinit

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

[root@centos6 ~]# cp /boot/grub/grub.conf /tmp/
[root@centos6 ~]# sed -i 's/^[[:space:]]//' /tmp/grub.conf

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

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

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

[root@centos6 ~]# sed '1,3s@^.*@#&@g' /tmp/rc.sysinit | head -3
##!/bin/bash
##
## /etc/rc.d/rc.sysinit - run once at boot time

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

sed 's/enabled=0/enabled=1/g;s/gpgcheck=0/gpgcheck=2/g' /etc/yum.repos.d/CentOS-Media.repo | egrep "(enabled|gpgcheck)"

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

00 */4 * * * root /bin/tar -zcf /backup/etc-`date +%Y%m%d%H%M` /etc

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

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

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

[root@centos6 backup]# mkdir /stats
00 */2 * * * /bin/grep '^S' /proc/meminfo >>/stats/memory.txt

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

00 8-17/2 * * 1-5 /bin/echo "howdy"

脚本编程练习

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

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

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

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

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

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

#!/bin/bash
#
DIR=/tmp/testdir-`date +%Y%m%d`
touch /tmp/$DIR/file{1..100}
sed -n 'n;p' /etc/passwd|cut -d: -f1
for i in `seq 10 19`;do
   useradd user$i
   echo "user$i" | passwd --stdin user$i
   touch /tmp/file$i
   chown user$i:user$i /tmp/file$i
done

vim编辑器

1 什么是vim编辑器

    vim是模式化的编辑器

    文本编辑器:

    文本:纯文本,ASCII text;Unicode;

    文本编辑种类:

    行编辑器:sed

    全屏编辑器:nano, vi

2 vim基本模式

    编辑模式,命令模式

    输入模式

    末行模式:内置的命令行接口;

2.1 模式转换

2.1.1 编辑模式–>输入模式

    i:insert, 在光标所在处输入;

    a: append,在光标在处后方输入;

    o:在光标所在处的下方打开一个新行;

    I:在光标所在行的行首输入;

    A:在光标所在行的行尾输入;

    O:在光标所在处的上方打开一个新行;

2.1.2 输入模式–>编辑模式

    ESC

2.1.3 编辑模式–>末行模式

    :

2.1.3 末行模式 –> 编辑模式

    ESC

3 打开文件

    # vim [options] [file ..]

    +#:打开文件后,直接让光标处于第#行的行首;

    +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;

    [root@centos6 ~]# vim +5 /etc/fstab  #打开/etc/fstab文件,让光标处于第5行行首

    [root@centos6 ~]# vim +/UUID /etc/fstab  #打开/etc/fstab文件,让光标处于第一个被匹配到的字符“UUID”行的行首

    [root@centos6 ~]# vim + /etc/fstab   #打开/etc/fstab文件,让光标处于最后一行的行首

4 关闭文件:

4.1 编辑模式下

    ZZ:保存并退出;

4.2 末行模式下

    :q 退出

    :q! 强制退出,不保存此前的编辑操作

    :wq 保存并退出;

    :w, :q

    :x 保存并退出;

    :w /PATH/TO/SOMEFILE 另存为

5 光标跳转

5.1 字符间跳转

    h:左

    j:下

    k:上

    l:右

    #COMMAND:跳转由#指定的个数的字符;

5.2 单词间跳转

    w:下一个单词的词首;

    e:当前或后一个单词的词尾;

    b:当前或前一个单词的词首;

    nCOMMAND:跳转由n指定的个数的单词;

5.3 行首行尾跳转

    ^:跳转至行首的第一个非空白字符;

    0:跳转至行首;

    $:跳转至行尾;

5.4 行间跳转

    nG:n为数字,跳转至这个文件的第n行;

    1G, gg:跳转珐第一行;

    G:跳转至最后一行;

    n+[Enter]键:n为数字,光标向下跳转n行(常用)

5.5 句间跳转:

    )

    (

5.6 段间跳转

    }

    {

5.7 翻屏:

    Ctrl+f:向文件尾翻一屏

    Ctrl+b:向文件首部翻一屏

    Ctrl+d:向文件尾部翻半屏

    Ctrl+u:向文件首部翻半屏

    Enter:按行向后翻

6 vim的编辑命令

6.1 字符编辑

    x:删除光标所在处一个的字符

    X:删除光标所在处之前的一个字符

    nx:n为数字,删除光标所在处起始的n个字符

    xp:交换光标所在处的字符与其后面字符的位置;

6.2 替换命令

    r:替换光标所在处的字符一次

    R:会一直替换光标所在处的字符,直到按下[Esc]键为止(常用)

6.3 删除命令

    dd:删除光标所在处的那一整行(常用)

    ndd:n为数字,删除光标所在的向下n行,例如20dd则是向下删除20行(常用)

    d$:删除从光标所在处到该行行尾的字符

    d^:删除从光标所在处到该行行首的字符

    dw:删除光标所在处的这个单词至下个单词词首

    de:删除光标所在处的这个单词

    db:删除光标所在处前面的一个单词

    d0:那个是数字的0,删除从光标所在处到该行的最前面的一个字符

6.4 粘贴命令

    p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;(常用)

    P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;(常用)

6.5 复制命令

    yy:复制光标所在的那一行(常用)

    nyy:n为数字,复制光标所在的向下n行,例如20yy则是向下复制20行(常用)

    y1G:复制光标所在行到第一行的所有数据

    yG:复制光标所在行到最后一行的所有数据

    y0:复制光标所在的字符到该行行首的所有数据

    y0:复制光标所在的字符到该行行尾的所有数据

6.6 改变命令(chage,c)

    编辑模式 –> 输入模式,实现删除操作;

    cc:删除光标所在的行,并转换为输入模式;

    ncc:n为数字,删除光标所在的向下n行,并转换为输入模式;例如20cc则是向下删除20行(常用)

6.7 可视化模式

    v:按字符选定;

    V:按行选定;

    结合编辑命令使用:d, c, y

6.8 撤销(undo)操作:

    u:撤销此前的操作;(常用)

    nu:n为数字,撤销此前的n个操作;

    Ctrl+r:恢复此前的撤销(常用)

    .:重复执行前一个编辑操作

    默认可以撤销50个之前的操作

    vim自带的练习教程:vimtutor

7 vim末行模式:

    vim末行模式是内建的命令行接口

7.1 地址定界

    :start_position[,end_position]:起始位置,结束位置

    n:特定的第#行,例如5即第5行;

    .:点号表示当前行;

    $:最后一行;

    n,n:指定行范围,左侧为起始行,右侧为结束行;

    n,+n:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7,从第3行开始向后+7行

    .,$-1:表示从当前行到倒数第二行

    1,$:表示从第一行到最后一行;

    %:表示全文

    /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;

    例如,/first/,$:从第一次能被first匹配到的行开始到最后一行结束;

    /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;

    可同编辑命令一同使用,实现编辑操作:

    d、y、c

    w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;

    r /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;

    范例:

    :5r /root/test.txt:将/root/test.txt文件中的5行内容添加到当前文件中。

7.2 查找

    /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;

    ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;

    n:这个n是英文n按键,继续查找下一个,与命令方向相同;

    N:这个n是英文N按键,继续查找上一个,与命令方向相反;

7.3 查找查找并替换

    s:末行模式的命令;使用格式:

    s/要查找的内容/替换为的内容/修饰符

    要查找的内容:可使用正则表达式;

    替换为的内容:不能使用下则表达式,但可以引用;

    如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;

    直接引用查找模式匹配到的全部文本,要使用&符号;

    修饰符:

    i:忽略大小写;

    g:全局替换,意味着一行中如果匹配到多次,则均替换;

    范例:

        :1,20s/this/THIS/ig:将1到20行的this替换为THIS,并忽略大小写

        可把分隔符替换为其它非常用字符:s@@@、s###

    示例:

        :%s@\<t\([[:alpha:]]\+\)\>@T\1@g:表示把文件中以t开头的单词替换为T开头

        :%s@\<t[[:alpha:]]\+\>@&er@g:表示把文件中以t开头的单词尾部都加上一个er

    练习1、复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;

        [root@www ~]# cp /etc/grub2.cfg /tmp/

        [root@www ~]# vim /tmp/grub2.cfg 

        :%s@^[[:space:]]\+@@

    练习2、复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#;

        :%s@^[[:space:]]\+[^[:space:]]@#&@g

    练习3、为/tmp/grub2.cfg文件的前三行的行首加上#号;

    练习4、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;

        :%s@\(enabled\|gpgcheck\)=0@\1=1@g

8 vim的多文件功能:

8.1 多文件

    vim FILE1 FILE2 …

8.1.1 在文件间切换:

    :next  下一个

    :prev  上一个

    :first   第一个

    :last   最后一个

8.1.2 退出所有文件:

    :wqall 保存所有文件并退出;

    :wall

    :qall

8.2 多窗口

    -o:水平分割窗口

    -O:垂直分割窗口

        在窗口间切换:Ctrl+w, ARROW

        注意:单个文件也可以分割为多个窗口进行查看:

    Ctrl+w, s:水平分割窗口

    Ctrl+w, v:垂直分割窗口

9 vim的环境设置

    注意:在末行模式下的设定,仅对当前vim进程有效;

    永久有效:

        全局:/etc/vimrc

        用户个人:~/.vimrc

    1、行号 

        显示:set number, 简写为set nu 

        取消显示:set nomber, set nonu

    2、括号匹配高亮 

        匹配:set showmatch, set sm 

        取消:set nosm

    3、自动缩进 

        启用:set ai 

        禁用:set noai

    4、高亮搜索 

        启用:set hlsearch 

        禁用:set nohlsearch

    5、语法高亮 

        启用:syntax on 

        禁用:syntax off

    6、忽略字符大小写 

        启用:set ic 

        禁用:set noic

    获取帮助: 

        :help 

        :help subject

课外作业:如何设置tab键缩进4个字符;

vim /etc/vimrc 
set ts=4
set expandtab
set autoindent

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

(0)
上一篇 2016-12-05 17:03
下一篇 2016-12-05 17:03

相关推荐

  • Linux中的文件管理命令及shell特性

    Linux中的文件管理命令 一、linux中的目录管理命令:mkdir和rmdir mkdir命令:创建目录 – SYNOPSIS         mkdir [OPTION]… DIRECTORY…     -…

    Linux干货 2016-09-27
  • M22 程序员偷懒战法

    前段时间有个外国的程序猿走红网络,这个哥们可以说是懒到了极点,上班请假给领导发短信写脚本,下班晚回家给老婆发短信写脚本,甚至于接个咖啡也要写脚本。这个哥们离职之后,他的同事在他的办公电脑上发现了这些脚本,并公布到了网上,引起众程序猿纷纷膜拜。最近我刚好学到shell脚本部分,就让我分析其中的一个跟领导请假的脚本吧。 #!/bin/sh -e # Exit e…

    Linux干货 2017-04-06
  • 防火墙之iptables使用

    一、防火墙简介           Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;        软件防火墙(软件逻辑):一般寄生在操作系统…

    2017-06-18
  • 挂载

    挂载的相关介绍

    Linux干货 2017-12-10
  • 第一天课程内容

    一 连接VNC 主机名:172.20.0.100 二 课堂资源下载 ftp://172.16.0.1 三 博客作业     优秀示例 www.yulongjun.com     博客地址 www.178linux.com     作业要求 1.每周一篇或更多,整理当周内容。 2.老师周五发链接地址,提交博客链接。 四 职业发展线路 运维 > Pytho…

    Linux干货 2018-03-26
  • 系统自动化安装的实现及SELINUX的设置

    系统的自动化安装     anaconda:系统安装程序         tui:基于图形库curses的文本窗口         gui:图形窗口     装载根文件系统,并启动…

    Linux干货 2016-09-16