目录
- vim编辑器
- vim编辑器介绍
- vim编辑器操作
- vim编辑器三中模式
- 命令行模式
- 末行模式
- 编辑模式
- 一次性定时任务
- at命令
- (1)添加一次性任务。
- (2)删除一次性任务
- (3)通过man命令查看at使用手册
- (1)crontab基本语法
- (1)脚本编写规范
- (2)执行程序
- (3)基础语法
- (4)标准输出echo
- (5)基础输入
- (6)变量使用
- (1)选择结构if
- 选择结构case
- (3)循环结构for
- (4)循环结构while
- (5)拓展
- (6)函数
vim编辑器
vim编辑器介绍
vim编辑器是Unix和Linux系统中的定点编辑器,他回一个命令行编辑器,被系统内建使用时不需要安装,操作过程中占用系统资源较少,同时提供了高度的定制化操作、因此一直被广大Unix/Linux爱好者/开发人员喜爱。
- 系统自带的是一个精简版的vim编辑器:vi编辑器。打开文件指令是:
vi 文件名称 - 要想使用真正的vim编辑器需要通过命令行安装:
yum install vim - 安装后开启vim编辑器命令。
vi/vim 文件名称
如果要打开的文件名不存在会新建一个文件。
vim编辑器操作
在了解vim编辑器具体操作时需要先知道vim编辑器拥有三种模式:命令模式、末行模式、编辑模式。
vim编辑器三中模式
命令行模式
命令行模式又称全面模式/视图模式/查看模式:该模式下只能移动光标和查看内容。
命令行模式的相关命令:
按键 | 描述 |
---|---|
x | 删除光标所在字符,相当于delete |
X | 删除光标前一个字符,相当于backspace |
dd | 删除光标所在行,删除一行 |
dnd | n表示数字,连续删除光标后n行 |
yy | 复制光标所在行,复制一行 |
yny | n为数字,连续复制光标后n行 |
p/P | 小写p将复制的一行数据粘贴在光标下一行 大写P将复制的数据粘贴到下n行 |
G | 跳转到文档最后一行 |
gg | 跳转到文档的第一行 |
H | 光标移动到可视化窗口的第一行 |
M | 光标移动到可视化窗口的中间一行 |
u | 撤销操作,返回上一步 |
ctrl+r | 反撤销 |
ctrl+b | back 往回翻一整页 |
ctrl+f | front 往前翻一整页 |
ctrl+d | down 往下翻一页 |
ctrl+u | up 往上翻一页 |
^所在行开头;$所在行结尾。
末行模式
末行模式又称末行命令模式:在命令模式输入特定的命令符号执行特殊操作。
按键 | 描述 |
---|---|
:w | 保存文件 |
:q | 不保存,退出文件 |
:wq | 保存并退出文件 |
:w! | 强制保存文件 |
:q! | 强制不保存退出文件 |
:wq! | 强制保存并退出文件 |
😡 | 保存退出 |
:x! | 强制保存退出文件 |
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
:n1,n2s/old/new/g | 将n1行开始到n2行的内容中出现的old字符替换成new字符 old支持正则匹配 |
/str | 在文件中光标位置向下查询str字符串 |
?str | 在文件中光标位置向上查询str字符串 |
编辑模式
编辑模式就是可以往文件内插入文本内容,可以自定义喧杂额在光标前或者光标后输入内容。
编辑模式的相关命令:
按键 | 描述 |
---|---|
i | 从命令行模式进入编辑模式,并在光标前插入内容 |
I | 行首插入字符 |
a | 光标后插入字符 |
A | 行尾插入字符 |
o | 光标下一行输入字符 |
O | 光标上一行输入字符 |
三种模式关系图
shell编程
shell编程的目的:让我们通过手工操作的繁琐步骤,是程序完成自动化地操作。是Linux操作系统中的一种自动化的操作。
一次性定时任务
Linux中提供了at命令,用于指定时间点,就可以在指定的额时间点添加多条执行命令,党制定的时刻到达时,就会除服执行所有的命令。
at命令
(1)添加一次性任务。
at -l:查看任务
at 时间点:指定的时间点上,添加任务。
ctrl + D:组合键保存定时任务
未执行一次性定时任务时:
到点执行了任务后:
(2)删除一次性任务
atrm 任务编号
(3)通过man命令查看at使用手册
周期重复性任务
Linux中提供了定时任务操作crontab实现周期重复性任务,通常情况下crontab是系统的一个内建组件,如果系统缺少了这个组件,可以yum install crontab安装组件。
(1)crontab基本语法
通过crontab命令添加任务、编辑任务、删除任务
命令 | 描述 |
---|---|
crontab -l | 列出当前用户的所有周期性任务 |
crontab -e | 编辑当前用户的周期性任务 |
crontab -r | 删除当前用户的所有周期性任务 |
crontab -e 编辑任务同时创建了一个任务文件,直接编辑添加任务,任务格式固定格式。
一第一个*号为例,说明语法
- *:表示每一天都额每个小时的每分钟执行一次后面的命令
- 10:表示每一天的每个小时中的第10分钟,执行一次后面的命令。
- */5:表示每一天的每个小时中,每间隔5分钟,执行一次后面的命令
- 5,10,20,30:表示每一天的每个小时中,第5、10、20、30分钟时刻在执行后面命令。
- 10-20:表示每一天的每个小时中,第10分钟开始到第20分钟结束,每分钟执行命令
SHELL脚本基本语法
(1)脚本编写规范
脚本程序是Unix和Linux系统中的一种特殊的文件,一定要妥善的管理和整理起来。
- 属于用户的脚本程序,全部放在指定的路径了scripts/目录下
- 脚本程序的后缀名称,同一使用.sh作为文件后缀名(约定俗成)
- 脚本程序的第一行代码:#!/bin/sh 指定程序的执行者(是一条可执行命令)
(2)执行程序
基本程序的执行:
Unix/Linux中的文件都有自己的权限,r/wx
①在没有执行权限的情况下(拥有r权限)
可以直接指定使用哪个可执行命令去执行。
执行语法:sh 脚本程序名.sh
②用户拥有某个脚本程序的执行权限(x),可以直接执行脚本程序。
执行语法:./脚本程序名.sh
(3)基础语法
SHELL语法中以#号开头的都是单行注释,除了第一行的#!/bin/sh,这是一条可执行命令,不是注释。
(4)标准输出echo
格式:
echo 要打印展示的消息
类似于python中的print()函数。
echo 打印信息完直接换行
echo -n 打印信息完不换行
(5)基础输入
SHELL中使用read来读取用户从键盘输入的信息。
-p:打印提示信息
-s:用户输入信息时不回显
(6)变量使用
变量就是一个标识符(有特殊意义的符号,由字母、数字、下划线组成,数字不能开头)
变量需要先声明后使用,变量不要使用特殊符号、Linux命令的单词。
命名规范与python语法一致。
SHELL编程之程序结构
(1)选择结构if
基本语法
if 条件;
then
条件如果为真要执行的代码
fi
多分支
if 条件1;then
条件1如果为真要执行的代码
elif 条件2;then
条件2如果为真要执行的代码
else
条件如果都不为真要执行的代码
fi
文件判断
选项 | 描述 |
---|---|
-e | 判断文件是否存在 if [ -e 文件路径 ] |
-d | 判断是否是文件夹 if [ -d 文件路径 ] |
-f | 判断是否是文件 if [ -f 文件路径 ] |
-r | 判断指定文件是否可读 if [ -r 文件路径 ] |
-w | 判断文件是否可写 if [ -w 文件路径 ] |
-x | 判断文件是否可执行 if [ -x 文件路径 ] |
字符串判断
选项 | 描述 |
---|---|
= | 判断两个字符是否相等 |
!= | 判断两个字符是否不相等 |
-z | 判断字符串长度是否为0 zero |
-n | 判断字符串是否为空 null |
整数判断
选项 | 描述 |
---|---|
-eq | 判断两个整数是否相等 |
-gt | > |
-lt | < |
-ge | >= |
-le | <= |
-ne | != |
逻辑判断
选项 | 描述 |
---|---|
&& | 判断并且关系 |
-a | 判断并且关系 |
|| | 判断或者关系 |
-o | 判断或者关系 |
! | 判断取反 |
选择结构case
case用于匹配操作,可以多种结果进行匹配
基本语法
case 变量 in
值1)
要执行的代码
;;
值2)
要执行的代码
;;
*)
都没有匹配成功时要执行的代码
;;
easc
(3)循环结构for
for循环结构与python中的语法结构基本一致。
基本语法
for 临时变量 in 一串数据
do 开始循环
循环的代码
done 循环结束
(4)循环结构while
while循环结构,与python中的循环结构基本一致
while 条件
do
循环执行的代码
done
(5)拓展
完成整数运算有三种操作方式
- expr运算表达式,如expr 12 + 13
- $(())运算符号,如res=$((12 + 13))
- $[]运算符号,如res=$[12 + 13]
程序暂停运行
sleep 秒数
(6)函数
声明函数
基本语法
function 函数名称(){
函数中的代码
}
快捷语法
函数名称(){
函数中的代码
}
调用函数:直接使用函数名称调用函数函数名称