AI智能
改变未来

【第三章】Vim编辑器与Shell脚本命令


a: 切换到光标下一位输入
i: 切换到光标当前位
o: 切换到光标下一行输入

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

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

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

例:[root@dq]# vim 文件名.sh         创建一个脚本文件

命令模式下参数作用

参数 作用
YY 复制光标所在行
DD 删除光标所在行
5DD 删除光标所在行的5行
P 粘贴
U 撤销操作

:wq!(强制保存并退出)

带参数的脚本\"$0\"    脚本名称\"$1\"    第一个参数\"$#\"    参数个数\"$*\"    所有的参数\"$?\"    判断上一条命令是否执行成功   0---成功    非0----不成功&&    若前面命令执行成功,则执行后面||       若前面命令执行失败,则执行后面!     取反

例 [ $USER = root ] && echo “ADMIN” || echo “USER”

**编写一个简单的脚本!!!**[root@linuxprobe ~]# vim example.sh#!/bin/bashecho \"当前脚本名称为$0\"echo \"总共有$#个参数,分别是$*。\"echo \"第1个参数为$1,第5个为$5。\"[root@linuxprobe ~]# sh example.sh one two three four five six当前脚本名称为example.sh总共有6个参数,分别是one two three four five six。第1个参数为one,第5个为five。

判断用户输入的参数及条件表达式

按照测试对象来划分,条件测试语句可以分为4种:

文件测试语句;

逻辑测试语句;

整数值比较语句;

字符串比较语句。

文件测试所用的参数

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

整数比较参数

参数 含义
-eq 是否=
-ne 是否!=
-gt 是否>
-lt 是否<
-le 是否<=
-ge 是否>=
例 [root@dq]# [ 10 -gt 10 ][root@dq]# echo $?1

判断变量是否已被使用
[ -z $变量名 ]
echo ¥?
0—没有使用
1—已使用
流程控制语句
1、if条件控制语句

if [ 条件测试语句 ]then命令fi
例 [root@dq]# 		#!/bin/bashif [ ! -e /media/haha ]thenmkdir -p /media/hahafi//判断目录是否存在,不存在就创建目录

for case使用举例来说明

#!/bin/bash#ping3次 间隔0.2秒 最大响应时间3秒ping -c 3 -i 0.2 -W 3 $1 &> /dev/null             //输出过程到黑洞文件中if [ $? -eq 0 ]; then    //如果上次命令执行成功,显示主机在线echo \"$1 is online\"else                          //否则显示离线echo \"$1 is offline\"fi

判断成绩脚本

#!/bin/bashread -p \"Enter:\" GRADEif [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; thenecho \"$GRADE is Excellent\"elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ];thenecho \"$GRADE is Pass\"elseecho \"$GRADE is Fail\"fi

批量生成用户脚本

#!/bin/bashread -p \"Enter a passwd:\" PASSWDfor UNAME in `cat user.txt`doid $UNAME &> /dev/nullif [ $? -eq 0 ];thenecho \"Already Exists\"elseuseradd $UNAME &>/dev/nullecho \"$PASSWD\" | passwd --stdin $UNAME &> /dev/nullif [ $? -eq 0 ];thenecho \"$UNAME,Create Success\"elseecho \"$UNAME.Create Failure\"fifidone

一个小游戏

#!/bin/bashPRICE=$(expr $RANDOM % 1000)TIMES=0while truedoread -p \"Enter:\" INTlet TIMES++if [ $INT -eq $PRICE ];thenecho “Good”echo \"$TIMES\"exit 0elif [ $INT -gt $PRICE ];thenecho \"High\"elseecho \"Low\"fidone

case使用举例脚本

#!/bin/bashread -p \"Enter:\" Keycase \"$Key\" in[a-z]|[A-Z])echo \"字母\";;[0-9])echo \"数字\";;*)echo \"Error\"esac

计划任务
1、单次计划任务

at 时间命令(完成后按ctrl+D)

2、删除计划任务

at-l    (查看计划任务)atrm 序号

3、多次计划任务
crond为服务名称
crontab为配置工具

crontab -e      //打开计划任务规则分	时	日	月	星期	命令30	*	*	*	*		ls -l//每30分钟执行一次 ls -l命令

本章总结:
1.Vim编辑器的三种模式分别是什么?

答:命令模式、末行模式与输入模式(也叫编辑模式或插入模式)。

2.怎么从输入模式切换到末行模式?

答:需要先敲击Esc键退回到命令模式,然后敲击冒号(:)键后进入末行模式。

3.一个完整的Shell脚本应该哪些内容?

答:应该包括脚本声明、注释信息和可执行语句(即命令)。

4.分别解释Shell脚本中$0与$3变量的作用。

答:在Shell脚本中,$0代表脚本文件的名称,$3则代表该脚本在执行时接收的第三个参数。

5.if条件测试语句有几种结构,最灵活且最复杂的是哪种结构?

答:if条件测试语句包括单分支、双分支与多分支等三种结构,其中多分支结构是最灵活且最复杂的结构,其结构形式为if…then…elif…then…else…fi。

6.for条件循环语句的循环结构是什么样子的?

答:for条件循环语句的结构为“for 变量名 in 取值列表 do 命令序列 done”,如图4-20所示。

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

答:因条件测试值永久为true,因此脚本中循环部分会无限地重复执行下去,直到碰到exit命令才会结束。

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

答:case条件语句。

9.Linux系统的长期计划任务所使用的服务是什么,其参数格式是什么?

答:长期计划任务需要使用crond服务程序,参数格式是“分、时、日、月、星期 命令”。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 【第三章】Vim编辑器与Shell脚本命令