Vim编辑器与Shell命令脚本

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Vim编辑器与Shell命令脚本相关的知识,希望能为你提供帮助。
一、Vim文本编辑器
1、打起精神要牢记Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数。
2、Vim编辑器的特点

  • Vim全称为Vi Improved,是Vi编辑器的提升版本;
  • 添加了代码着色功能(最大的改进);
  • 某些编程场景下可自动修正错误代码。
3、Vim编辑器的3种模式
  • 命令模式:控制光标,可对文本复制、粘贴、删除和查找等操作。
  • 输入模式:文本录入。
  • 末行模式:保存或退出,设置编辑环境,执行命令等。
Vim编辑器与Shell命令脚本

文章图片



5、Shell脚本支持的条件表达式(条件测试语句)1)条件表达式格式条件表达式两边均应有一个空格,最外层由[]括起来
Vim编辑器与Shell命令脚本

文章图片
2)条件表达式分类
条件表达式
用途
作用
文件测试
判断文件是否存在或权限是否满足等
  • -d  测试文件是否为目录类型
  • -e    测试文件是否存在
  • -f    判断是否为一般文件
  • -r    测试当前用户是否有权限读取
  • -w    测试当前用户是否有权限写入
  • -x    测试当前用户是否有权限执行
逻辑测试
判断条件表达式是否成立
  • & &     逻辑“与”      当前面的命令执行成功后才会执行它后面的命令
  • ||      逻辑“或”    当前面的命令执行失败后才会执行它后面的命令
  • !        逻辑“非”      把条件测试中的判断结果取相反值。也就是说,如果原本测试的结果是正确的,则将其变成错误的;原本测试错误的结果,则将其变成正确的。
整数值比较
仅与整数进行比较,不能与字符串、文件等内容一起操作,也不能使用“=”、“> ”、"< “等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突
  • -eq是否等于
  • -ne是否不等于
  • -gt是否大于
  • -lt是否小于
  • -le是否小于或等于
  • -ge是否大于或等于
字符串比较
判断测试字符串是否为空值,或两个字符串是否相同。常用来判断某个变量是否未被定义(即内容为空值)。
  • =比较字符串内容是否相同
  • !=比较字符串内容是否不同
  • -z判断字符串内容是否为空
3)条件表达式的返回值
返回值
含义
0
条件成立(True)
非零值
条件不成立(False)
4)应用示例-判断当前空闲内存值是否不足
[root@linuxprobe ~]# free -m
totalusedfreesharedbuff/cacheavailable
Mem:1966137412816463397
Swap:2047661981
[root@linuxprobe ~]# free -m | grep Mem:
Mem:1966137412816463397
[root@linuxprobe ~]# free -m | grep Mem: | awk print $4
128

[root@linuxprobe ~]# FreeMem=`free -m | grep Mem: | awk print $4`
[root@linuxprobe ~]# echo $FreeMem
128

[root@linuxprobe ~]# [ $FreeMem -lt 1024 ] & & echo "Insufficient Memory"
Insufficient Memory

四、流程控制语句
1、if条件测试语句0)if条件测试语句注意事项:
  • if 与 fi必须成对出现
  • if、fi、then、elif、else关键字前后必须用空格进行间隔
  • 当then与if 同行时,if 与 then 间用; 间隔
  • else 是最后一种判断条件,其后不能再出现then关键字
1)单分支结构
Vim编辑器与Shell命令脚本

文章图片

2)双分支结构
Vim编辑器与Shell命令脚本

文章图片

3)多分支结构
Vim编辑器与Shell命令脚本

文章图片

4)应用示例——判断分数
#!/bin/bash
read -p "Enter your score(0-100):" GRADE
if [ $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

2、for循环0)注意事项for 与 in 搭配使用
for 与 do done 搭配使用(do与done成对出现)
1)for循环格式:for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。
Vim编辑器与Shell命令脚本

文章图片

2)应用示例——批量创建用户
  • /dev/null是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。
vim users.txt
andy
barry
carl
duke
eric
george

vim addusers.sh
#!/bin/bash
read -p "Enter The Users Password : " PASSWD
for UNAME in `cat users.txt`
do
id $UNAME & > /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME , Already exists"
else
useradd $UNAME
echo "$PASSWD" | passwd --stdin $UNAME & > /dev/null
echo "$UNAME , Create success"
fi
done

bash addusers.sh
Enter The Users Password : linuxprobe
andy , Create success
barry , Create success
carl , Create success
duke , Create success
eric , Create success
george , Create success

tail -6 /etc/passwd
andy:x:1001:1001::/home/andy:/bin/bash
barry:x:1002:1002::/home/barry:/bin/bash
carl:x:1003:1003::/home/carl:/bin/bash
duke:x:1004:1004::/home/duke:/bin/bash
eric:x:1005:1005::/home/eric:/bin/bash
george:x:1006:1006::/home/george:/bin/bash

3、while循环1)while循环注意事项
  • while循环通过判断条件的真假来决定是否继续执行命令,条件为真就继续执行,为假就结束循环。
  • 根据条件重复执行命令
  • 执行前并不确定最终执行的次数
  • do与done成对出现
Vim编辑器与Shell命令脚本

文章图片

2)应用示例——猜数字提示:
获得随机数字 :使用$RANDOM变量来调取出一个随机的数值(范围为0~32767),并将其对1000进行取余操作,同时使用expr命令取得其结果。
获取用户输入:通过read读取用户的键盘输入值。
vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "请输入您猜测的价格数目:" INT
let TIMES++
if [ $INT -eq $PRICE ] ; then
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit
elif [ $INT -gt $PRICE ] ; then
echo "太高了!"
else
echo "太低了!"
fi
done

4、case条件测试语句1)case 注意事项case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。
Vim编辑器与Shell命令脚本

文章图片

2)应用示例——判断用户输入类型
vim Checkkeys.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "您输入的是 字母。"
; ;
[0-9])
echo "您输入的是 数字。"
; ;
*)
echo "您输入的是 空格、功能键或其他控制字符。"
esac

五、计划任务服务程序
1、计划任务分类一次性计划任务:执行1次就结束。(如:今晚23:30重启网站服务。)

周期性计划任务:重复执行。(如:每周一凌晨3:25把/home/wwwroot目录备份为backup.tar.gz)
2、单次计划任务(at  时间)1)注意事项
  • 使用ctrl + d 键来结束计划任务的编辑
  • 可使用atrm 计划任务编号 来删除某条计划任务
2) at命令的参数及其作用
参数
作用
-f
指定包含命令的任务文件
-q
指定新任务名称
-l
显示待执行任务列表
【Vim编辑器与Shell命令脚本】-d
删除指定待执行任务
-m

    推荐阅读