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

1. Vim文本编辑器

Vim编辑器中设置了三种模式——命令模式、末行模式和输入(编辑)模式。在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式再进行文档编辑工作。而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。
可以使用a、i、o这三个键从命令模式切换到输入模式。其中,a键与i键分别是在光标后面一位和光标当前位置切换到输入模式,而o键则是在光标的下面再创建一个空行。在编写完之后,要想保存并退出,必须先敲击键盘的Esc键从输入模式返回命令模式。然后再输入:wq!切换到末行模式才能完成保存退出操作。

命令模式中最常用的一些命令

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

2. 编写Shell脚本

2.2 接收用户的参数

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

[root@linuxprobe ~]# vim example.sh
echo "The .sh file name is $0."
echo "There are $# arguments, they are $*."
echo "The first argument is $1, the fifth argument is $5."
[root@linuxprobe ~]# bash example.sh one two three four five six
The .sh file name is example.sh.
There are 6 arguments, they are one two three four five six.
The first argument is one, the fifth argument is five.

2.3 判断用户的参数

Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回非零值。条件测试语法的执行格式为测试语句格式:[ 条件表达式 ]。切记,条件表达式两边均应有一个空格。

文件测试所用的参数

运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

可用的整数比较运算符

运算符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

常见的字符串比较运算符

运算符作用
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空

3. 流程控制语句

3.1 if条件测试语句

[root@linuxprobe ~]# vim chkscore.sh
#!/bin/bash
read -p "Enter your score (0-100) : " GRADE
if [ $GRADE -gt 100 ] || [ $GRADE -lt 0 ] ; then
		echo "$GRADE is error."
elif [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
		echo "$GRADE is excellent."
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
		echo "$GRADE is pass."
else
		echo "$GRADE is fail."
fi

3.2 for条件循环语句

[root@linuxprobe ~]# vim chkhost.sh
#!/bin/bash
HOSTLIST=$(cat~/ipaddrs.txt)
for ip in $HOSTLIST
do
		ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
		if [ $? -eq 0 ]
		then 
				echo "Host $IP is Online."
		else
				echo "Host $IP is Offline."
		fi
done

3.3 while条件循环语句

[root@linuxprobe ~]# vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "The real price is between 0 and 999, please guess how much the price is."
while true
do
		read -p "Enter the price you guessed : " INT
		let TIMES++
		if [ $PRICE -eq $INT ] ; then
				echo "Congratulations! The real price is $PRICE."
				echo "You have guessed $TIMES times."
				exit
		elif [ $INT -gt $PRICE ] ; then
				echo "You guessed too high."
		else
				echo "You guessed too low."
		fi
done

3.4 case条件测试语句

[root@linuxprobe ~]# vim chkkeys.sh
#!/bin/bash
read -p "Please enter a character and press enter to confirm." KEY
case "$KEY" in
		[a-z]|[A-Z])
				echo "You entered a character."
				;;
		[0-9])
				echo "You entered a number."
				;;
		*)
				echo "You entered somethingelse"
esac

4. 计划任务服务程序

at命令中的参数及其作用

参数作用
-f指定包含命令的任务文件
-q指定新任务名称
-l显示待执行任务的列表
-d删除指定的待执行任务
-m任务执行后向用户发邮件

crontab命令中的参数及其作用

参数作用
-e编辑计划任务
-u指定用户名称
-l列出任务列表
-r删除计划任务

使用crond设置任务的参数字段说明

字段说明
分钟取值为0~59的整数
小时取值为0~23的任意整数
日期取值为1~31的任意整数
月份取值为1~12的任意整数
星期取值为0~7的任意整数,其中0与7均为星期日
命令要执行的命令或程序脚本

复习题

  1. Vim编辑器的3种模式分别是什么?
    命令模式、输入模式、末行模式

  2. 怎么从输入模式切换到末行模式?
    先按Esc切换到命令模式,然后按:切换到末行模式

  3. 一个完整的Shell脚本应该包含哪些内容?
    脚本声明、注释信息和可执行语句(命令)

  4. 分别解释Shell脚本中$0与$3变量的作用。
    Shell脚本的名字和第三个参数

  5. if条件测试语句有几种结构,最灵活且最复杂的是哪种结构?
    if条件测试语句包括单分支、双分支与多分支等三种结构,其中多分支结构是最灵活且最复杂的结构,其结构形式为if...then...elif...then...else...fi

  6. for条件循环语句的循环结构是什么样子的?
    for 变量名 in 取值列表 do 命令序列 done

  7. 若在while条件循环语句中使用true作为循环条件,那么会发生什么事情?
    循环不会停止

  8. 如果需要依据用户的输入参数执行不同的操作,最方便的条件测试语句是什么?
    case条件测试语句

  9. Linux系统的长期计划任务所使用的服务是什么,其参数格式是什么?
    长期任务计划需要使用crond服务程序,参数格式是分时日月星期命令

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值