第四章_linux

                命令模式:复制粘粘删除撤销                                                                                     



    dd



    删除(剪切,可P粘贴)光标所在整行                                                                                                          



    5dd



    删除(剪切)从光标处开始的5行



    yy



    复制光标所在整行



    5yy



    复制从光标处开始的5行



    n



    显示搜索命令定位到的下一个字符串



    N



    显示搜索命令定位到的上一个字符串



    u



    撤销上一步的操作



    p



    将之前删除(dd)或复制(yy)过的数据粘贴到光标后面




    清空文件所有内容: 1000dd


    a键:光标后面一位

    i键:光标当前位置切换到输入模式

    o键:在光标的下面再创建一个空行

末行模式:

:w 保存

:q 退出

:q! 强制退出(放弃对文档的修改内容)

:wq! 强制保存退出

:set nu 显示行号

:set nonu 不显示行号

:命令 执行该命令

:整数 跳转到该行

:s/one/two 将当前光标所在行的第一个one替换成two

:s/one/two/g 将当前光标所在行的所有one替换成two

:%s/one/two/g 将全文中的所有one替换成two

?字符串 在文本中从下至上搜索该字符串

/字符串 在文本中从上至下搜索该字符串




    在Linux系统中,主机名大多保存在/etc/hostname文件中






       1、  /etc/sysconfig/network-scripts

        2、 vim ifcfg-ens160

     TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens160
    ONBOOT=yes
    IPADDR=192.168.10.10
    NETMASK=255.255.255.0
    GATEWAY=192.168.10.1
    DNS1=192.168.10.1

    3、nmcli connection reload ens160


    [root@linuxprobe ~]# cd /etc/yum.repos.d/
    [root@linuxprobe yum.repos.d]# vim rhel8.repo
    [BaseOS]
    name=BaseOS
    baseurl=file:///media/cdrom/BaseOS                
    enabled=1
    gpgcheck=0
    [AppStream]
    name=AppStream
    baseurl=file:///media/cdrom/AppStream
    enabled=1
    gpgcheck=0

    创建挂载点后进行挂载操作,并设置成开机自动挂载(详见第6章):

    [root@linuxprobe yum.repos.d]# mkdir -p /media/cdrom
    [root@linuxprobe yum.repos.d]# mount /dev/cdrom /media/cdrom
    mount: /media/cdrom: WARNING: device write-protected, mounted read-only.
    [root@linuxprobe yum.repos.d]# vim /etc/fstab
    /dev/cdrom /media/cdrom iso9660 defaults 0 0






    通过查看SHELL变量可以发现,当前系统已经默认使用Bash作为命令行终端解释器了:

    [root@linuxprobe ~]# echo $SHELL
    /bin/bash

    脚本声明 #!/bin/bash

            脚本注释

        增加执行权限    chmod u+x example.sh


    第四章_linux_02

    $0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N个位置的参数值


    1. 文件测试语句

      格式 :[ 测试判断  文件 ]

    Eg: 判断/etc/fstaba是否为目录类型

                [root@linuxprobe ~]# [ -d /etc/fstab ]
                  [root@linuxprobe ~]# echo $?
                   1


                  0表示正常,非0表示错误

        前后的空格不能少

    第四章_linux_03

    2、逻辑测试语句

    判断+返回,用逻辑语句

    && 逻辑与 前面成功,执行后面

    ||    逻辑或  前面失败,执行后面

    !   逻辑非  对判断结果取反值,之前若为正确则变成错误,若为错误则变成正确

    下图,第一个!是逻辑非,第二!是不等于

    第四章_linux_04


    整数比较运算符,仅能对数字操作,因为等号与赋值冲突,大于小于号与输出重定向和输入重定向冲突,所有用以下字符表示比较

    -eq 是否等于    -nq 是否不等于

    -lt 是否小于    -gt 是否大于

    -le 是否小于等于  -ge 是否大于等于


    [ `free -m | grep Mem | awk '{print $4}'`  -lt 150 ] && echo "low" || echo "zugou"



    • 第四章_linux_05


    字符串比较




    =



    比较字符串内容是否相同



    !=



    比较字符串内容是否不同



    -z



    判断字符串内容是否为空








    if 

     then

    fi


    • 双分支

    if

     then

    else

    fi

    eg: 判断IP地址是否在线

    (注意空格不能少)

    第四章_linux_06


    • 多分支

    if

     then

    elif

      then

    else

    fi


    eg:批量创建用户

    变量大写,命令小写

    eg:批量ping列表里的IP,判断是否存活

    `命令`   等同于 $(命令)

    第四章_linux_07

    第四章_linux_08

    while


    at  时间

    命令语句

    Ctrl+d退出

    Eg:

    [root@linuxprobe ~]# at 23:30

    warning: commands will be executed using /bin/sh

    at> systemctl restart httpd

    at> <EOT>(Ctrl+d

    job 1 at Wed Jan 26 23:30:00 2022

    [root@linuxprobe ~]# at -l

    1       Wed Jan 26 23:30:00 2022 a root

    [root@linuxprobe ~]# at -d 1  删除指定任务

    [root@linuxprobe ~]# at -l


    合并方式:echo "systemctl restart httpd" | at 23:30



    crontab  周期执行


    crond   服务名称

    crontab  配置工具

    crontab 命令与vim/etc/crontab效果一样

    第四章_linux_10

    -e         编辑计划任务

    -u         指定用户名称

    -l         列出任务列表

    -r         删除计划任务 只能全部删除,部分删除的话要-e重新编辑

    Eg1:

    每周一、三、五的凌晨3:25,都需要使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件

    25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot


    Eg2:每周一至周五的凌晨1点自动清空/tmp目录内的所有文件

    0 1 * * 1-5 usr/bin/rm -rf /tmp/*

    注意:

    用逗号(,)来分别表示多个时间段,用减号(-)来表示一段连续的时间周期

    用除号(/)表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)。

    在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询

    计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突。

    有时ctrontab无法生效,可能是crond服务没有启用:

    systemctl status crond  查看服务状态

    restart  +enable 确保crond服务启动


    root 可以管理自己和所有人

    普通用户  只能管理自己






    第四章_linux_11