马哥2016全新Linux+Python高端运维班-Linux vim 末行模式,sed命令,基本bash脚本

本周作业内容:

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#
:%[email protected]^[[:space:]]\[email protected]#&@g
384 substitutions on 384 lines
#vim末行模式下
%:表示全文相当于1,$
s: 在末行模式下完成查找替换操作
    s/要查找的内容/替换为的内容/修饰符
    要查找的内容:可使用模式
        替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容;
        修饰符:
            i: 忽略大小写
            g: 全局替换;默认情况下,每一行只替换第一次出现;
            查找替换中的分隔符/可替换为其它字符,例如
                    [email protected]@@
                    s###
                    
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

:%[email protected]^[[:space:]]\[email protected]@g
#此题理解为将开除为空表字符的行替换为空,即为删除。

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

:%[email protected]^#[[:space:]]\[email protected]@g

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

:1,[email protected]^.*@#&
#1,3:表示1-3行
#&:表示前面查找到的整个内容即1-3行内容
# 地址定界
    :start_pos,end_pos
        #: 具体第#行,例如2表示第2行;
        #,#: 从左侧#表示行起始,到右侧#表示行结尾;
        #,+#: 从左侧#表示的行起始,加上右侧#表示的行数;
        .: 当前行
        $: 最后一行
            .,$-1
        %:全文, 相当于1,$

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

:%[email protected]@[email protected]

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

:%[email protected]\(enabled=\)[email protected]\[email protected]
#\(enabled=\)1 表示分组匹配到enabled=1 \1表示后向引用\(\)中的内容。

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

[[email protected] ~]# crontab -e
crontab: installing new crontab
[[email protected] ~]# crontab -l
* * * * 2,4,6 /bin/tar cvf /backup/messages_logs/messages-$(date +%F) /var/log/messages

#周期任务计划:
            系统cron任务
                # Example of job definition:
                # .---------------- minute (0 - 59)
                # |  .------------- hour (0 - 23)
                # |  |  .---------- day of month (1 - 31)
                # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
                # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
                # |  |  |  |  |
                # *  *  *  *  * user-name  command to be executed
                顺序为:分,时,日,月,周
            crontab命令:
                    crontab [-u user] [-l | -r | -e] [-i]
                        -l: 列出所有任务;
                        -e: 编辑任务;
                        -r: 移除所有任务;
                        -i:同-r一同使用,以交互式模式让用户有选择地移除指定任务;

-u user: 仅root可运行,代为为指定用户管理cron任务;
#$(date +%F) :%F     full date; same as %Y-%m-%d;整体表示为引用当前系统时间,-按照%F的形式。
#$(date +%y%m%d) :也可使用这种方式来给文件尾部添加年月日。

#例如:    [[email protected] messages_logs]# tar cvf /backup/messages_logs/messages-$(date +%y%m%d) /var
        /log/messagestar: 从成员名中删除开头的“/”
        /var/log/messages
        [[email protected] messages_logs]# ls
        messages-160909

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

[[email protected] ~]# crontab -e
crontab: installing new crontab
[[email protected] ~]# crontab -l
0 */2 * * * /bin/egrep ‘^S‘ /proc/meminfo >> /stats/memory.txt
#在创建计划任务时一定自己测试一下命令是否有问题。比如每两个小时,最好给分钟位指定一个时间。

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

[[email protected] ~]# crontab -e 
crontab: installing new crontab
[[email protected] ~]# crontab -l
0 */2 * * 1-5 /bin/echo "Howdy."

脚本编程练习

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

   1 #!/bin/bash
  2 #
  3 mkdir /tmp/testdir-$(date +%F-%H-%M-%S)
    [[email protected] homework]# bash -x 10.sh
    ++ date +%F-%H-%M-%S
    + mkdir /tmp/testdir-2016-09-09-21-06-23

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

方式1:    [[email protected] homework]# vim 11.sh
          1 #!/bin/bash
          2 #
          3 for i in {1..100};do
          4         touch file$i
          5 done
    [[email protected] homework]# bash -n 11.sh
    [[email protected] homework]# bash -x 11.sh
方式2:
        [[email protected] test]# cat 111.sh 
        #!/bin/bash
        #
        for ((i=1;i<101;i++));do
            if [ -f file$i ];then 
            continue;
            fi
            touch file$i
        done

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

  1 #!/bin/bash
  2 #
  3 sed -n ‘n;p‘ /etc/passwd | cut -d: -f1

#知识点:
      用法:
        sed [option]... ‘script‘ inputfile...

script:
                ‘地址命令‘

常用选项:
                -n:不输出模式中的内容至屏幕;
                -e: 多点编辑;
                -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本;
                -r: 支持使用扩展正则表达式;
                -i: 原处编辑;
                        sed -n ‘n;p‘ FILE:显示偶数行
                    sed ‘1!G;h;$!d‘ FILE:逆向显示文件内容
                    sed ‘$!N;$!D‘ FILE: 取出文件后两行;
                    sed ‘$!d‘ FILE:取出文件最后一行;
                    sed ‘G‘ FILE: 每一行追加一个空白行;
                    sed ‘/^$/d;G‘ FILE: 给每一行追加一个空白行,如有多个空白行合并一个空白行。
                    sed ‘n;d‘ FILE: 显示奇数行;
                    sed -n ‘1!G;h;$p‘ FILE: 逆向显示文件中的每一行;
    常用的高级编辑命令:
                    sed -n ‘n;p‘ FILE:显示偶数行;
                    sed ‘1!G;h;$!d‘ FILE:逆向显示文件内容
                    sed ‘$!N;$!D‘ FILE: 取出文件后两行;
                    sed ‘$!d‘ FILE:取出文件最后一行;
                    sed ‘G‘ FILE: 每一行追加一个空白行;
                    sed ‘/^$/d;G‘ FILE: 给每一行追加一个空白行,如有多个空白行合并一个空白行。
                    sed ‘n;d‘ FILE: 显示奇数行;
                    sed -n ‘1!G;h;$p‘ FILE: 逆向显示文件中的每一行;

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

    [[email protected] ljohn]# ls /home/
    bash    linux     openstacks  user1   user14  user19  user6     users1   users5
    basher  liu       slackware   user10  user15  user2   user7     users10  users6
    centos  mandirva  testbash    user11  user16  user3   user8     users2   users7
    fedora  mysql     tuser1      user12  user17  user4   user9     users3   users8
    hadoop  nologin   user        user13  user18  user5   useradd1  users4   users9
    [[email protected] ljohn]# cat 13.sh 
    #!/bin/bash
    #
    for i in {10..19};do
        if id user$i &> /dev/null;then
            echo "user$i is exists."
        else
            useradd user$i && echo "user$i" | passwd --stdin user$i
        fi
    done

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

    [[email protected] homework]# for i in {10..19};do touch /tmp/file$i;done

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

    [[email protected] homework]# cat 15.sh 
    #!/bin/bash
    #
    for i in {10..19};do
        touch /tmp/file$i && chown user$i:user$i /tmp/file$i
    done
    [[email protected] tmp]# ll
    总用量 192
    -rw-r--r--. 1 root   root      2 9月   5 10:32     -rwxrwxrwt. 1 root   root   2569 8月  30 16:50 a.txt
    -rw-r--r--. 1 root   root    852 8月  21 11:31 etc.test
    -rw-r--r--. 1 user10 user10    0 9月   9 22:52 file10
    -rw-r--r--. 1 user11 user11    0 9月   9 22:52 file11
    -rw-r--r--. 1 user12 user12    0 9月   9 22:52 file12
    -rw-r--r--. 1 user13 user13    0 9月   9 22:52 file13
    -rw-r--r--. 1 user14 user14    0 9月   9 22:52 file14
    -rw-r--r--. 1 user15 user15    0 9月   9 22:52 file15
    -rw-r--r--. 1 user16 user16    0 9月   9 22:52 file16
    -rw-r--r--. 1 user17 user17    0 9月   9 22:52 file17
    -rw-r--r--. 1 user18 user18    0 9月   9 22:52 file18
    -rw-r--r--. 1 user19 user19    0 9月   9 22:52 file19
时间: 2024-08-08 01:25:26

马哥2016全新Linux+Python高端运维班-Linux vim 末行模式,sed命令,基本bash脚本的相关文章

马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习

本周作业内容: 1.详细描述一次加密通讯的过程,结合图示最佳. 一次加密通讯的过程: 首先Bob用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面. Bob用对称加密算法把数据及特征码整个进行加密. Bob用接收方的公钥加密对称密钥并附加到数据后面. Alice用私钥解密对称密钥. Alice用对称密钥解密出数据及加密的特征码. Alice用发送方的公钥解密特征码,并用相同的算法算出数据的特征码,比较两个特征码是否一致,若一致即可获得Bob的数据. 如图所示: 单向

马哥2016全新Linux+Python高端运维班-Linux用户创建及权限管理

第三周作业内容:1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | cut -d' ' -f1 | sort -u      centos     liu     root 2.取出最后登录到当前系统的用户的相关信息.     第一种方式:         [[email protected] ~]# last | head -n1         liu      tty8        

马哥2016全新Linux+Python高端运维班-Linux 网络基础管理,包管理,bash脚本练习

本周作业内容: 1.请描述网桥.集线器.二层交换机.三层交换机.路由器的功能.使用场景与区别.     集线器:又称"HUB"主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上.它工作于OSI(开放系统互联参考模型)参考模型第一层,即"物理层".     二层交换机:工作于OSI模块的第2层(数据链路层),故称为二层交换机.可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录

马哥2016全新Linux+Python高端运维班-Linux基础命令文件管理类及目录创建

周二作业内容: 1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 文件管理类命令:cp(复制),mv(移动),rm(删除) 1) cp:   cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... cp SRC DEST 如果目标不存在,新建DEST,并将SRC中的内容填充至DEST 如果目录存在 如果DEST是文件

马哥2016全新Linux+Python高端运维班-Linux grep正则表达式练习,及find命令

本周作业内容: 1.显示当前系统上root.fedora或user1用户的默认shell:     [[email protected] home]# grep -E  "^(root|fedora|user1)\>" /etc/passwd |cut -d: -f1,7       root:/bin/bash                 user1:/bin/bash     fedora:/bin/bash     #本题使用扩展的正则表达式     #^:首行 |:或

马哥2016全新Linux+Python高端运维班-Linux grep命令及基本正则表示

本周作业内容: 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限.     第一种方式:         [[email protected] /]#chmod -R go=--- /home/tuser1         [[email protected] tuser1]# ls -l /home/tuser1/         总用量 4         -rw-------. 1 root root 47

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

Linux+Python高端运维班第二次作业

Linux+Python高端运维班第二次作业 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. [[email protected] ~]# who |cut -d" " -f1|uniq (unknown) root test1 [[email protected] ~]# who |cut -d" " -f1|sort -u root (unknown) wangyanglin 2.取出当前系统上被用户当作其默认shel

全新Linux+Python高端运维班第三次作业

1.找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(): [[email protected] ~]# grep -E -o "[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions  fstab_decode_str() checkpid() __readlink() __fgrep() __kill_pids_term_kill_checkpids() __kill_pids_term_