Linux 学习第五课、Vim编辑器与Shell命令脚本

本文深入介绍了Linux系统中Vim编辑器的使用,包括命令模式、末行模式和编辑模式,以及常用命令。接着详细讲解了Shell脚本的编写,包括参数接收、条件测试和流程控制语句。通过实例展示了如何编写简单的脚本、判断用户参数以及使用if条件语句。最后,探讨了如何结合Vim编辑器和Shell脚本实现自动化任务,例如通过for循环批量测试主机在线状态。
摘要由CSDN通过智能技术生成

Vim编辑器与Shell命令脚本

首先讲解如何使用Vim编辑器来编写、修改文档,然后通过逐个配置主机名称、系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸多命令、快捷键、模式切换方法的理解。然后把前面章节中讲解的Linux命令、命令语法与Shell脚本中的各种流程控制语句通过Vim编辑器写到Shell脚本中结合到一起,实现最终能够自动化工作的脚本文件。本章最后演示了怎样通过at命令与crond计划任务服务来分别实现一次性的系统任务设置和长期性的系统任务设置,从而让日常的工作更加高效,更自动化。

每当在讲课时遇到需要让学生记住的知识点时,为了能让他们打起精神来,我都会突然提高嗓门,因此有句话他们记得尤其深刻:“在Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数”。而且在日常工作中大家也肯定免不了要编写文档,这些工作都是通过文本编辑器来完成的。刘遄老师写作本书的目的是让读者切实掌握Linux系统的运维方法,而不是仅仅停留在“会用某个操作系统”的层面上,所以我们这里选择使用Vim文本编辑器,它默认会安装在当前所有的Linux操作系统上,是一款超棒的文本编辑器。

Vim之所以能得到广大厂商与用户的认可,原因在于Vim编辑器中设置了三种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法(见图4-1)。

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

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

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

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

在这里插入图片描述
Vim编辑器模式的切换方法

在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。Vim编辑器中内置的命令有成百上千种用法,为了能够帮助读者更快地掌握Vim编辑器,表4-1总结了在命令模式中最常用的一些命令。

Vim中常用的命令

命令 作用
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。末行模式中可用的命令如表4-2所示。

末行模式中可用的命令

命令---- 作用

: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
?字符串 -------在文本中从下至上搜索该字符串
/字符串---------在文本中从上至下搜索该字符串

编写Shell脚本

可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程语言才有的控制结构特性。要想正确使用Shell中的这些功能特性,准确下达命令尤为重要。Shell脚本命令的工作方式有两种:交互式和批处理。

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

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

在Shell脚本中不仅会用到前面学习过的很多Linux命令以及正则表达式、管道符、数据流重定向等语法规则,还需要把内部功能模块化后通过逻辑语句进行处理,最终形成日常所见的Shell脚本。

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

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

编写简单的脚本

估计读者在看完上文中有关Shell脚本的复杂描述后,会累觉不爱吧。但是,上文指的是一个高级Shell脚本的编写原则,其实使用Vim编辑器把Linux命令按照顺序依次写入到一个文件中,这就是一个简单的脚本了。

例如,如果想查看当前所在工作路径并列出当前目录下所有的文件及属性信息,实现这个功能的脚本应该类似于下面这样:

[root@linuxprobe ~]# vim example.sh
#!/bin/bash
#For Example BY linuxprobe.com
pwd
ls -al
Shell脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将.sh后缀加上,以表示是一个脚本文件。在上面的这个example.sh脚本中实际上出现了三种不同的元素:第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;第三、四行的可执行语句也就是我们平时执行的Linux命令了。什么?!你们不相信这么简单就编写出来了一个脚本程序,那我们来执行一下看看结果:

[root@linuxprobe ~]# bash example.sh
/root/Desktop
total 8
drwxr-xr-x. 2 root root 23 Jul 23 17:31 .
dr-xr-x—. 14 root root 4096 Jul 23 17:31 …
-rwxr–r--. 1 root root 55 Jul 23 17:31 example.sh
除了上面用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/Desktop
total 8
drwxr-xr-x. 2 root root 23 Jul 23 17:31 .
dr-xr-x—. 14 root root 4096 Jul 23 17:31 …
-rwxr–r--. 1 root root 55 Jul 23 17:31 example.sh

接收用户的参数

但是,像上面这样的脚本程序只能执行一些预先定义好的功能,未免太过死板了。为了让Shell脚本程序更好地满足用户的一些实时需求,以便灵活完成工作,必须要让脚本程序能够像之前执行命令时那样,接收用户输入的参数。

其实,Linux系统中的Shell脚本语言早就考虑到了这些,已经内设了用于接收参数的变量,变量之间可以使用空格间隔。例如 0 对 应 的 是 当 前 S h e l l 脚 本 程 序 的 名 称 , 0对应的是当前Shell脚本程序的名称, 0Shell#对应的是总共有几个参数, ∗ 对 应 的 是 所 有 位 置 的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值