第四章vim编辑器与shell脚本
Vim编辑器
aio插入模式
Esc末行模式
:wq
a 在光标的下一位进行操作
I 直接插入
O 光标下一行
Esc 进入命令模式
命令模式中最常用的一些命令
P paste
脚本
两种运行脚本
1.bash 脚本名.sh //通用
2. ./脚本名.sh //一般没有权限
chmod u+x example.sh //增加权限
脚本声明 #!/bin/bash
脚本注释 #这是注释
脚本命令 ls pwd
脚本名以.sh结尾
Shell脚本自带
$0 脚本程序的名称
$# 总共接收到几个参数
$* 接收到的参数是什么/
$1,$3,$5 指的是分别接收第一三五的参数
$? 返回上次命令的返回值
在运行 bash 脚本名 后加参数信息
判断用户参数
-f 判断文件存不存在
-d判断目录存不存在
判断一个文件存不存在
[ -f /etc/aaa ] //存在
Echo $? //返回上一次命令的值
0 //0为true、非零的、1为false
逻辑
逻辑与&& 前面成功,则执行后面
逻辑或|| 前面失败,则执行后面
逻辑非! 取反
[ $USER = root ] &&echo "123" ||echo "321"
整数、数值比较运算符
[ 5 > 5 ] // 0 为什么?
在Linux里<、>与重定向冲突、=与赋值冲突
-eq 是否等于 =
-gt 大于 >
-lt 小于 <
-le 等于小于 <=
-ge 大于等于 >=
-ne 不等于 !=
制作一个提醒内存不足的小程序
free -m | grep Mem: | awk ‘{print $4}’
//提取以M为单位的值
awk ‘{print $4}’ //手动提取
提取第四列的信息
[ `free -m | grep Mem: | awk ‘{print $4}’` -lt 1024 ] && echo ”buzu”|| echo ”zu”
`执行命令`
字符串比较运算符
变量比较
= 是否相同
!= 比较字符串是否不同
-z 判断是否为空值
[ -z $a]
-e 是否存在
脚本
if判断
If [] ; then
Fi
#!/bin/bash
ping -c 3 -i 0.2 -w 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "host $1 yes"
else
echo "host $1 no!!!"
Fi
For do done循环
For 参数in 参数
do
可以内嵌if
done
While循环
$()=``
Let 名++ //let代表每次加一
Exit 0 //终止 循环
Case 测试语句
| || ) ()
或
Case 变量值 in
1) //if
语句
;;
2) //elif
语句
;;
*) //else
结束esac
#!/bin/bash
read -p "enter: " key
case "$key" in
[a-z]|[A-Z])
echo "zimu"
;;
[0-9])
echo "shuzi"
;;
*)
echo "no"
esac
4.4计划任务
一次性计划 at
有周期性计划 crond
一次性at
At 17:00
At> reboot // 17点重启
At> ctrl +d //用来保存
创建一个2分钟后执行的
at now +2 MINUTE
MINUTE 分钟
HOUr 小时
DAY 天
MONTH 月
At 时间 //创建一个计划任务
at -l 查看计划
At -c 编号 查看这个计划是什么命令
At -rm 编号 //删除这个计划
-f 指定包含命令的任务文件
-q 指定新任务名称
-l 显示待执行任务列表
-d 删除指定待执行任务
-m 任务执行后给用户发邮件
周期性crond
Crond 服务名称
Crontab 配置工具
分 时 日 月 星期 命令
参数 作用
-e 编辑计划任务
-u 指定用户名称
-l 列出任务列表
-r 删除计划任务
Crontab -e
如果没有信息 以空位占位 *
分 时 日 月 星期 命令
不能直接加命令 //写完整路径格式的命令
Whereis reboot
分 时 日 月 星期 命令
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为1~12的任意整数
星期 取值为0~7的任意整数,
其中0与7均为 星期日
分 时 日 月 星期 命令
30 3 5 9 * /命令 /每年的九月五号3点30
30 3 * 9 2 /命令 /每年的9月第二个星期3点30
30 3 * * 2 /命令 /每个礼拜二3点30
30 */2 * * * /命令 每隔两小时30分执行
30 2 3-5 * * /命令 每月的3到5号两点30分
30 2 3,5,7 * * /命令 每月的3 5 7号两点30分
30 * * */2 * /命令 每隔两个月30分钟
10,30 * * * * /命令 每个小时的10分钟和30分钟
,分隔
* */2:每隔两天
-至
命令:路径加名称
回车是第二条计划
一行是一条