Vim文本编辑器
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
命令模式中最常用的一些命令
命令 作用
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
a键 在光标后一位进入输入模式
i键 在光标当前位进入输入模式
o键 在光标下一行创建空行进入输入模式
输入模式:正常的文本录入。
ESC 进入末行模式
末行模式:保存或退出文档,以及设置编辑环境。
末行模式中最常用的一些命令
命令 作用
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two
:s/one/two/g 将当前光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串
编写Shell脚本
Shell脚本命令的工作方式有下面两种
交互式(Interactive):用户每输入一条命令就立即执行。
批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。
编写简单的脚本
直接输入一些命令即可
接收用户的参数
例子
vim example.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。"
bash example.sh one two three four five six
当前脚本名称为example.sh
总共有6个参数,分别是one two three four five six。
第1个参数为one,第5个为five。
判断用户的参数
条件测试语句格式
【 条件表达式 】
按照测试对象来划分,条件测试语句可以分为4种
1 逻辑测试语句
2 文件测试语句
3 整数值比较语句
4 字符串比较语句
逻辑测试语句
&& 是逻辑“与”,只有当前面的语句执行成功的时候才会执行后面的语句。
|| 是逻辑“或”,只有当前面的语句执行失败的时候才会执行后面的语句。
! 是逻辑“非”,代表对逻辑测试结果取反值;之前若为正确则变成错误,若为错误则变成正确。
文件测试所用的参数
操作符 作用
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
可用的整数比较运算符
操作符 作用
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于
常见的字符串比较运算符
操作符 作用
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空
流程控制语句
if条件测试语句
if条件测试语句可以让脚本根据实际情况自动执行相应的命令
单分支
if 条件测试操作
then
命令序列
fi
双分支
if 条件测试操作
then
命令序列1
else
命令序列2
fi
多分支
if 条件测试操作1 ; then
命令序列1
elif 条件测试操作2 ; then
命令序列2
else
命令序列3
fi
for条件循环语句
for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。当要处理的数据有范围时,使用for循环语句就再适合不过了
for 变量名 in `取值列表`
do
命令序列
done
while条件循环语句
while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。
while 条件测试操作
do
命令序列
done
case条件测试语句
case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令
case "变量值" in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认命令序列
esac
计划任务服务程序
一次性计划任务
at命令的参数及其作用
参数 作用
-f 指定包含命令的任务文件
-q 指定新任务名称
-l 显示待执行任务列表
-d 删除指定待执行任务
-m 任务执行后给用户发邮件
删除任务
atrm 序号
特殊场景
at now +2 MINUTE
长期性计划任务
crontab命令的参数及其作用
参数 作用
-e 编辑计划任务
-u 指定用户名称
-l 列出任务列表
-r 删除计划任务
使用crond设置任务的参数字段说明
字段 说明
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为1~12的任意整数
星期 取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本
格式一
* * * * * *
| | | | | |
| | | | | +-- Year (range: 1900-3000)
| | | | +---- Day of the Week (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month (range: 1-31)
| +---------- Hour (range: 0-23)
+------------ Minute (range: 0-59)
格式二
@reboot : Run once after reboot. 重启时执行一次
@yearly : Run once a year, ie. "0 0 1 1 *". 一年执行一次,1月1号0点0分执行
@annually : Run once a year, ie. "0 0 1 1 *". 一年执行一次,1月1号0点0分执行
@monthly : Run once a month, ie. "0 0 1 * *". 一月执行一次,每月1号0点0分执行
@weekly : Run once a week, ie. "0 0 * * 0". 一周执行一次
@daily : Run once a day, ie. "0 0 * * *". 一天执行一次
@hourly : Run once an hour, ie. "0 * * * *". 一小时执行一次