《LINUX 就该这么学》第4章 Vim编辑器与Shell命令脚本

本文介绍了Vim编辑器的三种模式及其常用命令,详细阐述了Shell脚本的编写、执行方法,包括接收用户参数、条件测试语句的运用。此外,讲解了流程控制语句,如if条件测试、for循环、while循环和case条件测试,以及如何设置Linux的计划任务。最后,提到了计划任务的一次性和长期性管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.1 Vim文本编辑器

1、三种模式:
(1)命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
(2)输入模式:正常的文本录入。
(3)末行模式:保存或退出文档,以及设置编辑环境。
在这里插入图片描述

命令模式常用的命令:
在这里插入图片描述

末行模式常用命令:
在这里插入图片描述

4.2 编写Shell脚本

1、举例一个shell脚本:
(1)脚本的编写
在这里插入图片描述
第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;
第三、四行的可执行语句也就是我们平时执行的Linux命令了。
(2)执行脚本
法一:bash解释器
在这里插入图片描述
法二:改变权限+路径执行
在这里插入图片描述
2、接收用户的参数
在这里插入图片描述
在这里插入图片描述
example.sh文件:
在这里插入图片描述
结果:
在这里插入图片描述
3、判断用户的参数
在这里插入图片描述

按照测试对象来划分,条件测试语句可以分为4种:
1、文件测试语句;
2、逻辑测试语句;
3、整数值比较语句;
4、字符串比较语句。
文件测试即使用指定条件来判断文件是否存在权限是否满足等情况的运算符
在这里插入图片描述
举个栗子:
要求:用文件测试语句来判断/etc/fstab是否为一个目录类型的文件,然后通过Shell解释器的内设$?变量显示上一条命令执行后的返回值。
结果:为1,表示目录存在
在这里插入图片描述

逻辑语句与测试语句的结合:
(1)&&
它表示当前面的命令执行成功后才会执行它后面的命令,因此可以用来判断/dev/cdrom文件是否存在,若存在则输出Exist字样。
在这里插入图片描述
(2)||
表示当前面的命令执行失败后才会执行它后面的命令,因此可以用来结合系统环境变量USER来判断当前登录的用户是否为非管理员身份
在这里插入图片描述

整数比较运算符:
在这里插入图片描述

字符型比较运算符:

在这里插入图片描述

4.3 流程控制语句

1、if条件测试语句

在这里插入图片描述
举个栗子:
编辑mkcdrom.sh文件
在这里插入图片描述
判断DIR目录是否存在,不存在就新建一个文件夹
在这里插入图片描述
在这里插入图片描述

if条件语句的双分支结构由if、then、else、fi关键词组成,它进行一次条件匹配判断,如果与条件匹配,则去执行相应的预设命令;反之则去执行不匹配时的预设命令,相当于口语的“如果……那么……或者……那么……”。
在这里插入图片描述
举个栗子:这里的脚本主要使用ping命令来测试与对方主机的网络联通性
在这里插入图片描述
代码:
在这里插入图片描述
结果:在这里插入图片描述

if条件语句的多分支结构由if、then、else、elif、fi关键词组成,它进行多次条件匹配判断,这多次判断中的任何一项在匹配成功后都会执行相应的预设命令,相当于口语的“如果……那么……如果……那么……”。if条件语句的多分支结构是工作中最常使用的一种条件判断结构,尽管相对复杂但是更加灵活,语法格式如图4-19所示。在这里插入图片描述
举个栗子:
要求:下面使用多分支的if条件语句来判断用户输入的分数在哪个成绩区间内,然后输出如Excellent、Pass、Fail等提示信息。
代码解释:
在Linux系统中,read是用来读取用户输入信息的命令,能够把接收到的用户输入信息赋值给后面的指定变量,-p参数用于向用户显示一定的提示信息。在下面的脚本示例中,只有当用户输入的分数大于等于85分且小于等于100分,才输出Excellent字样;若分数不满足该条件(即匹配不成功),则继续判断分数是否大于等于70分且小于等于84分,如果是,则输出Pass字样;若两次都落空(即两次的匹配操作都失败了),则输出Fail字样。
代码:在这里插入图片描述

测试结果:
在这里插入图片描述

2、for条件循环语句

用途:for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理,当要处理的数据有范围时,使用for循环语句再适合不过了。
语法格式:
在这里插入图片描述
举个栗子:
要求:使用for循环语句从列表文件中读取多个用户名,然后为其逐一创建用户账户并设置密码。
过程:首先创建用户名称的列表文件users.txt,每个用户名称单独一行。在这里插入图片描述
使用read读入用户输入的密码值,并且赋值给PASSWD变量,-p来输出一些提示信息;然后逐一使用“id 用户名”命令查看用户的信息,并使用$?判断这条命令是否执行成功,也就是判断该用户是否已经存在。
(/dev/null是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。)
在这里插入图片描述
测试结果:可以发现均创建了用户,并用tail语句查看这些创建好的用户在这里插入图片描述

3、while条件循环语句

1、用法:while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。
2、格式:
在这里插入图片描述
举个栗子:
要求:一个商品的价格是123元,每次输入一个猜想的价钱,然后判断第几次能猜中这个商品的价格。
代码:
在这里插入图片描述
测试结果:
在这里插入图片描述

4、case条件测试语句

1、用法:case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。
2、在这里插入图片描述
举个栗子:
要求:判断输入的是字母、数字、其他字符
代码:
在这里插入图片描述
测试结果:在这里插入图片描述

4.4 计划任务服务程序

一次性计划任务

1、一次性事件的创立:只需要写成“at 时间”的形式就可以
2、查看:如果想要查看已设置好但还未执行的一次性计划任务,可以使用“at -l”命令;
3、删除:可以用“atrm 任务序号”
举个栗子:在这里插入图片描述

长期性计划任务

1、创建、编辑计划任务的命令为“crontab -e”
2、查看当前计划任务的命令为“crontab -l”,
3、删除某条计划任务的命令为“crontab -r”
(另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。)

“分、时、日、月、星期 命令”。这是使用crond服务设置任务的参数格式(其格式见表4-6)。需要注意的是,如果有些字段没有设置,则需要使用星号(*)占位,如图4-23所示。
在这里插入图片描述
在这里插入图片描述
(尤其需要注意的是,在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询,rm命令路径为下面输出信息中加粗部分。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值