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服务程序,参数格式是“分、时、日、月、星期 命令”。