ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Vim编辑器与Shell命令脚本

2022-05-05 20:04:21  阅读:185  来源: 互联网

标签:脚本 linuxprobe Shell Vim 命令 编辑器 root 光标


4.1 Vim文本编辑器

命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

输入模式:正常的文本录入。

末行模式:保存或退出文档,以及设置编辑环境

 

命令 作用
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
命令 作用
: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
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串

 

 

4.1.1 编写简单文档

可以分别使用a、i、o三个键从命令模式切换到输入模式。其中,a键与i键分别是在光标后面一位和光标当前位置切换到输入模式,而o键则是在光标的下面再创建一个空行

  • 4.1.2 配置主机名称
  • 将/etc/hostname配置文件的内容修改为“linuxprobe.com”
  • 第1步:使用Vim编辑器修改/etc/hostname主机名称文件。

    第2步:把原始主机名称删除后追加“linuxprobe.com”。注意,使用Vim编辑器修改主机名称文件后,要在末行模式下执行“:wq!”命令才能保存并退出文档。

    第3步:保存并退出文档,然后使用hostname命令检查是否修改成功。

  • 4.1.3 配置网卡信息
  • 现在有一个名称为ifcfg-ens160的网卡设备,将其配置为开机自启动,并且IP地址、子网、网关等信息由人工指定,其步骤如下所示。
  • 第1步:首先切换到/etc/sysconfig/network-scripts目录中(存放着网卡的配置文件)。

    第2步:使用Vim编辑器修改网卡文件ifcfg-ens160,逐项写入下面的配置参数并保存退出。由于每台设备的硬件及架构是不一样的,因此请读者使用ifconfig命令自行确认各自网卡的默认名称。

    设备类型:TYPE=Ethernet

    地址分配模式:BOOTPROTO=static

    网卡名称:NAME=ens160

    是否启动:ONBOOT=yes

    IP地址:IPADDR=192.168.10.10

    子网掩码:NETMASK=255.255.255.0

    网关地址:GATEWAY=192.168.10.1

    DNS地址:DNS1=192.168.10.1

    第3步:重启网络服务并测试网络是否连通。

    4.1.4 配置软件仓库
  • 软件仓库是一种能进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术,可以把Yum或DNF想象成是一个硕大的软件仓库,里面保存有几乎所有常用的工具,而且只需要说出所需的软件包名称,系统就会自动为您搞定一切
  • Yum与DNF软件仓库的配置文件是通用的,也就是说填写好配置文件信息后,这两个软件仓库的命令都是可以正常使用。建议在RHEL 8中使用dnf作为软件的安装命令,因为它具备更高的效率,而且支持多线程同时安装软件。
  • 搭建并配置软件仓库的大致步骤如下所示。

    第1步:进入/etc/yum.repos.d/目录中(因为该目录存放着软件仓库的配置文件)。

    第2步:使用Vim编辑器创建一个名为rhel8.repo的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面的配置参数并保存退出。

    仓库名称:具有唯一性的标识名称,不应与其他软件仓库发生冲突。

    描述信息(name):可以是一些介绍性的词,易于识别软件仓库的用处。

    仓库位置(baseurl):软件包的获取方式,可以使用FTP或HTTP下载,也可以是本地的文件(需要在后面添加file参数)。

    是否启用(enabled):设置此源是否可用;1为可用,0为禁用。

    是否校验(gpgcheck):设置此源是否校验文件;1为校验,0为不校验。

    公钥位置(gpgkey):若上面的参数开启了校验功能,则此处为公钥文件位置。若没有开启,则省略不写。

    第3步:按配置参数中所填写的仓库位置挂载光盘,并把光盘挂载信息写入/etc/fstab文件中。

    第4步:使用“dnf install httpd -y”命令检查软件仓库是否已经可用

  • 4.2 编写Shell脚
  • Shell脚本命令的工作方式有下面两种。

    交互式(Interactive):用户每输入一条命令就立即执行。

    批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。

    • 4.2.1 编写简单的脚本
    • [root@linuxprobe ~]# vim example.sh
      #!/bin/bash 
      #For Example BY linuxprobe.com 
      pwd 
      ls -al

      Shell脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将.sh后缀加上,以表示是一个脚本文件。

      在上面的这个example.sh脚本中实际上出现了3种不同的元素:第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;第三、四行的可执行语句也就是我们平时执行的Linux命令了

      • 除了上面用Bash解释器命令直接运行Shell脚本文件外,第二种运行脚本程序的方法是通过输入完整路径的方式来执行。但默认会因为权限不足而提示报错信息,此时只需要为脚本文件增加执行权限即可(详见第5章)。初次学习Linux系统的读者不用心急,等下一章学完用户身份和权限后再来做这个实验也不迟:

        [root@linuxprobe ~]# ./example.sh
        bash: ./Example.sh: Permission denied
        [root@linuxprobe ~]# chmod u+x example.sh
        [root@linuxprobe ~]# ./example.sh
        /root
        total 60
        dr-xr-x---. 15 root root  4096 Oct 12 00:41 .
        dr-xr-xr-x. 17 root root   224 Jul 21 05:04 ..
        -rw-------.  1 root root  1407 Jul 21 05:09 anaconda-ks.cfg
        -rw-------.  1 root root   335 Jul 24 06:33 .bash_history
        -rw-r--r--.  1 root root    18 Aug 13  2018 .bash_logout
        -rw-r--r--.  1 root root   176 Aug 13  2018 .bash_profile
        ………………省略部分输出信息………………
    • 4.2.2 接收用户的参数
    • 命令不仅要能接收用户输入的内容,还要有能力进行判断区别,根据不同的输入调用不同的功能。

      其实,Linux系统中的Shell脚本语言早就考虑到了这些,已经内设了用于接收参数的变量,变量之间使用空格间隔。例如,$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N个位置的参数值

      • [root@linuxprobe ~]# vim example.sh
        #!/bin/bash
        echo "当前脚本名称为$0"
        echo "总共有$#个参数,分别是$*。"
        echo "第1个参数为$1,第5个为$5。"
        [root@linuxprobe ~]# bash example.sh one two three four five six
        当前脚本名称为example.sh
        总共有6个参数,分别是one two three four five six。
        第1个参数为one,第5个为five
    • 4.2.3 判断用户的参数
    • 本书在前面章节中讲到,系统在执行mkdir命令时会判断用户输入的信息,即判断用户指定的文件夹名称是否已经存在,如果存在则提示报错;反之则自动创建。Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回非零值。条件测试语法的执行格式如图4-16所示。切记,条件表达式两边均应有一个空格。

      第4章 Vim编辑器与Shell命令脚本第4章 Vim编辑器与Shell命令脚本

      • &&是逻辑“与”,只有当前面的语句执行成功的时候才会执行后面的语句。
      • [root@linuxprobe ~]# [ -e /dev/cdrom ] && echo "Exist"
        Exist

        ||是逻辑“或”,只有当前面的语句执行失败的时候才会执行后面的语句。
      • [root@linuxprobe ~]# echo $USER
        root
        [root@linuxprobe ~]# [ $USER = root ] || echo "user"
        [root@linuxprobe ~]# su - linuxprobe 
        [linuxprobe@linuxprobe ~]$ [ $USER = root ] || echo "user"
        user

        !是逻辑“非”,代表对逻辑测试结果取反值;之前若为正确则变成错误,若为错误则变成正确
        • 当前我们正在登录的即为管理员用户—root。下面这个示例的执行顺序是,先判断当前登录用户的USER变量名称是否等于root,然后用逻辑“非”运算符进行取反操作,效果就变成了判断当前登录的用户是否为非管理员用户。最后若条件成立,则会根据逻辑“与”运算符输出user字样;若条件不满足,则会通过逻辑“或”运算符输出root字样,而只有在前面的&&不成立时才会执行后面的||符号
        • [root@linuxprobe ~]# [ ! $USER = root ] && echo "user" || echo "root"
          root
  • 4.3 流程控制语句
  • 4.4 计划任务服务程序

标签:脚本,linuxprobe,Shell,Vim,命令,编辑器,root,光标
来源: https://www.cnblogs.com/sun-lei/p/16226078.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有