古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Vim编辑器与Shell命令脚本相关的知识,希望能为你提供帮助。
一、Vim文本编辑器
1、打起精神要牢记Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数。
2、Vim编辑器的特点
- Vim全称为Vi Improved,是Vi编辑器的提升版本;
- 添加了代码着色功能(最大的改进);
- 某些编程场景下可自动修正错误代码。
- 命令模式:控制光标,可对文本复制、粘贴、删除和查找等操作。
- 输入模式:文本录入。
- 末行模式:保存或退出,设置编辑环境,执行命令等。
文章图片
5、Shell脚本支持的条件表达式(条件测试语句)1)条件表达式格式条件表达式两边均应有一个空格,最外层由[]括起来
文章图片
2)条件表达式分类
条件表达式 | 用途 | 作用 |
文件测试 | 判断文件是否存在或权限是否满足等 |
|
逻辑测试 | 判断条件表达式是否成立 |
|
整数值比较 | 仅与整数进行比较,不能与字符串、文件等内容一起操作,也不能使用“=”、“>
”、"<
“等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突 |
|
字符串比较 | 判断测试字符串是否为空值,或两个字符串是否相同。常用来判断某个变量是否未被定义(即内容为空值)。 |
|
返回值 | 含义 |
0 | 条件成立(True) |
非零值 | 条件不成立(False) |
[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关键字
文章图片
2)双分支结构
文章图片
3)多分支结构
文章图片
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循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。
文章图片
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成对出现
文章图片
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语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。
文章图片
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 计划任务编号 来删除某条计划任务
参数 | 作用 |
-f | 指定包含命令的任务文件 |
-q | 指定新任务名称 |
-l | 显示待执行任务列表 |
【Vim编辑器与Shell命令脚本】-d | 删除指定待执行任务 |
-m | 推荐阅读
|