目录
- Vim 编译器
- Shell 脚本
- 参数
- 条件表达式
- 测试语句
- 文件测试运算符
- 数字比较运算符
- 字符串比较运算符
- 流程测试语句
- 条件语句
- if 条件语句
- case 条件语句
- 循环语句
- for 循环
- while 循环
- 计划服务
- 一次性计划任务
- 长期性计划任务
- 参考资料
Vim 编译器
Vim 文件编译器是编写文件的好工具,它包括以下 3 种模式:
- 命令模式:移动光标,对文本进行增删查改等操作;
- 输入模式:向文件中输入文本;
- 末行模式:保存或退出文档,设置编辑环境。
使用 Vim 编译器时进入的是命令模式,通过 “a、i、o” 三个键可以切换为输入模式。“a” 键在光标的后一位进入输入模式,“i” 键在光标的当前位置进入,“o” 键则是在光标下面创建一个空行。
Vim 编辑器的常用命令如下:
命令 | 作用 |
dd | 删除光标所在整行 |
(数字)dd | 删除光标处开始的 n 行 |
yy | 复制光标处所在整行 |
(数字)yy | 复制删除光标处开始的 n 行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步操作 |
p | 将之前复制或删除的数据粘贴到光标后面 |
进入输入模式编辑好文本后,按 ESC 键回到命令模式,然后按 “:” 进入末行模式进行文本的保存和退出。
命令 | 作用 |
:w | 保存 |
:q | 退出 |
:q! | 强制退出 |
:wq! | 保存强制退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行命令 |
:整数 | 跳转到该行 |
: s/字符串a/字符串b | 将当前光标所在行的第一个字符串 a 替换为字符串 b |
: s/字符串a/字符串b/g | 将当前光标所在行的所有字符串 a 替换为字符串 b |
:%s/字符串a/字符串b/g | 将全文的字符串 a 替换为字符串 b |
?字符串 | 在文本中从下到上搜索字符串 |
/字符串 | 在文本中从上到下搜索字符串 |
Shell 脚本
将一系列 Linux 命令用 Vim 编辑器写到一个文件中,将这个文件的后缀名改为 .sh 就可以建立一个 Shell 脚本了。
vim example.sh
脚本中第一行需要用 “#!” 声明要使用哪种 Shell 解释器来执行脚本,而单一的 “#” 则是注释,一个简单的 Shell 脚本如下:
#!bash example.sh
#Hello,world!
echo Hello,world!
运行 Shell 脚本可以直接用 bash 解释器运行,也可以用脚本的路径来运行。
bash example.sh
./example.sh
参数
运行 Shell 脚本时可以向脚本传参,写法是在调用 Shell 脚本文件后面用空格间隔写上多个参数。一些用于接收参数的变量为:
变量 | 存储内容 |
$0 | Shell 脚本程序的名称 |
$# | 参数的总数 |
$* | 所有位置的参数值 |
$? | 显示上一次命令的返回值 |
$数字 | 第 n 个传入的参数值 |
条件表达式
测试语句
Shell 的测试语句用于判断表达式是否成立,条件成立返回数字 0,否则返回其他数据。测试语句的格式如下所示,注意中括号和表达式之间都有一个空格。
[ 条件表达式 ]
条件表达式自然支持逻辑运算符了,Shell 表达式支持 3 种逻辑运算符。“&&” 表示逻辑与,只有前面的语句执行成功后才会执行后面的语句。“||” 表示逻辑或,前面的语句执行失败后才会执行后面的语句。“!” 表示逻辑非,逻辑非会把条件测试中的结果取相反的值。例如:
[ -e /dev/cdrom ] && echo "Exist"
[ $USER = root ] || echo "user"
[ ! $USER = root ] || echo "administrator"
在用其他编程语言时,我们可能不是很关心语句是否执行,只关心表达式的运算结果。但是在 Shell 脚本来说要很注意语句的执行顺序,某个语句是否执行将产生很大的不同。
文件测试运算符
Shell 脚本对于不同的数据,使用的是不同的运算符进行比较。文件测试运算符有:
运算符 | 作用 |
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有读权限 |
-w | 测试当前用户是否有写权限 |
-x | 测试当前用户是否有执行权限 |
例如:
[ -d /etc/fstab ]
[ -f /etc/fstab ]
数字比较运算符
运算符 | 作用 |
-eq | = |
-ne | != |
-gt | > |
-lt | < |
-le | ≤ |
-ge | ≥ |
例如:
[ 10 -gt 10 ]
[ 10 -ep 10 ]
字符串比较运算符
运算符 | 作用 |
= | 比较字符串是否相同 |
!= | 比较字符串是否不同 |
-z | 比较字符串是否为 null |
例如:
[ -z $String ]
[ $LANG != “en.US” ] && echo "Not en.US"
流程测试语句
条件语句
if 条件语句
if 条件测试操作 1
then 命令序列 1
elif 条件测试操作 2
then 命令序列 2
else
命令序列 3
fi
case 条件语句
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
*)
默认命令序列
esac
循环语句
for 循环
for 变量名 in 取值列表
do
命令序列
dono
while 循环
while 条件测试操作
do
命令序列
done
计划服务
Linux 可以在指定的时间段启用或停止某些服务或命令,实现服务器自动化运行。
一次性计划任务
一次性计划任务指的是设置之后只在指定时间执行一次,一般用于临时工作需求。
命令 | 功能 |
at 时间 | 设置在指定时间运行的指令 |
at -l | 查看已设置但是未执行的一次性任务 |
atrm 任务序号 | 删除序号对应的任务 |
长期性计划任务
长期性计划任务可以实现按照某个时间周期完成任务,使用 Linux 的 crond 服务可以实现。
命令 | 功能 |
crontab -e | 创建、编辑任务 |
crontab -l | 查看当前任务 |
crontab -r | 删除某个任务 |
参考资料