目录
vim编辑器
在热门Linux操作系统中一般都会默认安装vim编辑器,vim是vi编辑器的升级版,vim编辑器有三种模式——命令模式、末行模式、编辑模式。
命令模式:控制光标移动可对文本进行删除、复制、粘贴等工作。
输入模式:正常的文本输入。
末行模式:保存、退出与设置编辑环境
三者的转化:
命令模式输入i、o、a进入编辑模式,使用ESC退回命令模式
命令模式输入:(冒号)进入末行模式,使用ESC退回命令模式
vim常用快捷键
命令 | 作用 |
dd | 删除光标所在处的一行 |
5dd | 删除从光标开始的5行 |
yy | 复制光标所在行 |
5yy | 复制从光标开始的5行 |
p | 将之前删除或复制过的内容粘贴到光标处 |
/字符串 | 从上至下搜索字符串 |
?字符串 | 从下至上搜索字符串 |
n | 显示搜索命令定位的下一个字符串 |
N | 显示搜索命令定位的上一个字符串 |
u | 撤销上一步的操作 |
vim末行模式常用命令
命令 | 作用 |
:w | 保存 |
:q | 退出 |
:q! | 强制退出(放弃修改) |
:wq! | 强制退出并保存 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该命令 |
: 整数 | 跳转到该行 |
shell脚本
shell脚本应该包括脚本声明、注释信息、可执行语句
脚本声明(#!):告诉系统用何种shell来解释
注释信息(#): 对可执行语句及其功能做介绍,可不写
可执行语句:执行的具体命令
写一个简单脚本显示当前工作路径列出目录下的所有文件与属性
#!/bin/bash
#For Example
pwd
ls -la
shell脚本的执行
shell脚本可以通过三种方式执行:
1.脚本文件路径: ./example.sh
2.sh脚本文件路径:sh example.sh
3.source脚本文件路径:source example.sh
其中脚本文件路径的方式执行需要为文件增加权限,sh和source则不需要
//直接执行权限不够
user@myubuntu:~/shell$ ./example.sh
bash: ./example.sh: 权限不够
//为sh文件添加执行权限
user@myubuntu:~/shell$ chmod u+x example.sh
user@myubuntu:~/shell$ ./example.sh
/home/user/shell
总用量 20
drwxrwxr-x 2 user user 4096 11月 11 15:15 .
drwxr-x--- 29 user user 4096 11月 11 15:15 ..
-rwxrw-r-- 1 user user 38 11月 11 15:15 example.sh
-rw-rw-r-- 1 user user 26 11月 6 20:34 tr2.txt
-rw-rw-r-- 1 user user 13 11月 6 20:19 tr.txt
shell接收用户参数
shell内设了接收用户参数的位置变量以及一些预定义的变量
$0 | 当前执行脚本的文件名 |
$1-9,${10},${11}... | 参数的位置变量 |
$# | 参数的个数 |
$* | 所有位置变量的值 |
$? | 上一条命令是否执行成功,0为成功,非0为失败 |
user@myubuntu:~/shell$ cat example.sh
#!/bin/bash
#For Example
echo "当前脚本名称$0"
echo "共有$#参数,分别为$*"
echo "第一个参数为$1,第三个参数为$3"
user@myubuntu:~/shell$ sh example.sh 1 2 3 4 5
当前脚本名称example.sh
共有5参数,分别为1 2 3 4 5
第一个参数为1,第三个参数为3
shell判断用户参数
shell脚本可以测试待定表达式是否成立,测试语句可细分为:文件测试、逻辑测试、数值比较、字符串比较
文件测试:[操作符 文件或目录名]
操作符 | 作用 |
-d | 测试是否为目录 |
-e | 测试是否存在 |
-f | 判断是否为文件 |
-r | 测试当前用户是否有权限读 |
-w | 测试当前用户是否有权限写 |
-x | 测试当前用户是否有权限执行 |
逻辑测试:[表达式1] 操作符 [表达式2]
操作符 | 作用 |
&& | 逻辑与,“而且” |
|| | 逻辑或,“或者” |
! | 逻辑非 |
数值比较:[整数1 操作符 整数2]
操作符 | 作用 |
-eq | 判断是否等于 |
-ne | 判断是否不等 |
-gt | 大于(greater than ) |
-lt | 小于 (less than) |
-le | 小于等于 |
-ge | 大于等于 |
字符串比较:[字符串1 操作符 字符串2]
操作符 | 作用 |
= | 比较字符串是否相等 |
!= | 比较字符串是否不相等 |
-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 变量名 in 取值列表
do 命令序列
done
while条件语句
while 条件测试操作
do 命令序列
done
case条件语句
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
.....
*)
默认命令序列
;;
计划任务服务
使用计划任务服务可以让各个服务、命令在指定时间段运行、停止。计划任务分为“一次性”和“长期性”。
一次性任务由atd服务/进程实现,计划的管理操作是“at”命令,具体可用参数如下:
参数 | 作用 |
at <时间> | 安排一次性任务 |
atq或at -l | 查看任务列表 |
at -c 序号 | 预览任务与设置环境 |
atrm 序号 | 删除任务 |
使用at创建计划有交互式和非交互式
//交互式 使用ctrl+d退出并保存任务
user@myubuntu:~/shell$ at 23:30
warning: commands will be executed using /bin/sh
at Fri Nov 11 23:30:00 2022
at> ls -al
at> <EOT>
job 2 at Fri Nov 11 23:30:00 2022
//使用echo加管道实现非交互式
user@myubuntu:~/shell$ echo "ls -al" | at 22:00
warning: commands will be executed using /bin/sh
job 3 at Fri Nov 11 22:00:00 2022
长期计划任务使用cron服务,具体方法如下:
创建修改任务:crontab -e [-u 用户名]
查看任务:crontab -l [-u 用户名]
删除任务:crontab -r [-u 用户名]
在创建编辑任务时有一个固定格式:“ 分钟 小时 日期 月份 星期 命令 ”