第三章 vim 编辑器与 Shell 命令脚本
前言
3.1 Vim文本编辑器
三种模式
- 命令模式:控制光标移动,可以对文本进行复制、粘贴、删除和查找等工作
- 输入模式:正常的文本录入
- 末行模式:保存退出文档,以及设置编辑环境
三种模式之间的切换方式
常用命令
△ dd 删除(剪切)光标所在整行内容
△ yy 复制光标所在行整行
△ n 显示搜索命令定位到的下一个字符串
△ N 显示搜索命令定位到的上一个字符串
△ u 撤销上一步操作
△ p 将之前剪切或复制过的数据粘贴到光标后面
末行模式中可用的命令
△ :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)
△ ?字符串 在文本中从下至上搜索该字符串
△ /字符串 在文本中从上至下搜过该字符串
常用快捷键
图源:见图片左下角标注
3.2 编写简单的Shell脚本
什么是Shell
Shell是一个命令行解释器,一个功能强大的编程语言,易编写、易调试,灵活性较强,解释执行的脚本语言,可以直接调用Linux系统命令
Shell脚本命令的工作方式
- 交互式:用户每输入一条命令就立即执行
- 批处理:由用户事先编写好一个完整的 Shell 脚本,Shell 会一次性执行脚本中诸多的命令
Shell脚本的执行
编写第一个脚本
#vi hello.sh
#!/bin/bash //标示 Shell 脚本;
#The first Program //注释
#Author:Guangran //注释
echo -e "Hello Guangran!" //内容
执行脚本
- 赋予执行权限,然后直接运行
chmod 755 hello.sh
./hello.sh
- 通过Bash调用执行脚本
bash hello.sh
多命令执行顺序
- ; [命令1] ; [命令2] 顺序执行,无逻辑关系
- && [命令1] && [命令2] 逻辑与
- || [命令1] || [命令2] 逻辑或
read
释义:接受用户键盘的输入
格式:read [选项] [变量名]
选项:
-P 提示信息
-t 秒数
-n 字符数
-s 隐藏输入的数据
Shell 编程
基础正则表达式
正则表达式用来在文件中匹配符合条件的字符串,包含匹配
字符截取命令
cut(前面有)
awk
格式:awk 条件1{动作1} 条件2{动作2}……
条件:一般使用关系表达式作为条件
x > 10 判断变量是否大于10
x >= 10 判断变量是否大于等于10
x <= 10 判断变量是否小于等于10
动作:格式化输出、流程控制语句
printf
格式:printf [输出类型输出格式] [输出内容]
输出类型:
%ns 输出字符串
%ni 输出整数 <n代表数量>
%m.nf 输出浮点数
输出格式:
\a 警告音
\b 退格
\f 清屏
\n 换行
\r 回车
\t 水平退格(Tab)
\v 垂直退格
条件判断
文件类型进行判断
- -d 判断文件是否存在(是目录为真)
- -e 判断文件是否存在(存在为真)
- -f 判断文件是否存在,并且是否为普通文件(是普通文件为真)
文件权限判断
- -r 是否可读
- -w 是否可写
- -x 是否可执行
文件比较
- [文件1] -nt [文件2] 1比2新,新为真
- [文件1] -ot [文件2] 1比2旧,旧为真
- [文件1] -ef [文件2] 1和2的lnode号是否一致
两个整数之间的比较
- 1 -eq 2 1是否等于2
- 1 -ne 2 1是否不等于2
- 1 -qt 2 1是否大于2
- 1 -lt 2 1是否小于2
- 1 -ge 2 1是否等于或小于2
- 1 -le 2 1是否等于或大于2
字符串的判断
- -z 为空
- -n 为非空
[字符串1] == [字符串2]
相等[字符串1] != [字符串2]
不相等
多重条件判断
- [判断1] -a [判断2] 逻辑与
- [判断1] -o [判断2] 逻辑或
- ! [判断] 逻辑非
流程控制
if 语句
#单分支 if 条件语句:
if [条件判断式]
then
程序
fi
#双分支 if 条件语句:
if [条件判断式]
then
条件成立执行的程序
else
条件不成立执行的程
fi
#多分支if条件语句:
if [条件判断1]
then
当条件成立,执行程序1
elif [条件判断2]
then
当条件成立,执行程序2
……
else
当所有条件不成立,执行此程序
fi
case 语句
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
"值……")
如果.....
;;
*)
如果都不是,则执行此程序
;;
esac
for 循环
#语法一:
for 变量 in 值1 值2 值3
do
程序
done
#语法二:
for (初始值;循环控制条件;变量变化)
do
程序
done
while 循环与 until 循环
#while 条件成立执行循环
while [条件判断式]
do
程序
done
#until 条件不成立执行循环
until [条件判断式]
do
程序
done
文章:第三章 vim 编辑器与 Shell 命令脚本
作者:Guangran
链接:https://www.rsecc.cn/334.html
声明:如无特别说明本文即为原创文章仅代表个人观点,版权归《广然笔记》所有,未经授权、请勿转载。