接《操作系统知识地图-基础知识篇(上)》
(四)Shell 篇
1.认识 BASH
Shell 是命令解释器,翻译用户的命令给内核执行,并将结果返回给用户
-
Shell 脚本的用处
组合系统命令实现自动化功能 组成脚本的基本元素是命令,不用深入地掌握系统函数库
-
内建命令与外部命令
内建命令不会创建子进程,但是对子Shell无效 外部命令会创建子进程
2.管道与重定向
管道符 |
-
重定向符号
< 输入重定向 > 输出重定向,覆盖方式 >> 输出重定向,追加方式
3.进程与内存的查看与调整
- 进程查看命令
- ps
- top
- 内存查看命令
- free 查看系统的内存使用率
- sar 显示更详细的系统运行状态,用于故障排除
- 常用的第三方系统状态查看命令
- iftop 查看某一进程的网络流量
4.变量与环境变量
- 变量的定义
- Shell 变量无需声明
- 销毁变量:unset 变量名
- 变量的赋值
- 变量名=变量值(注意等号两边不能有空格)
- 环境变量
- 其中的 PATH 环境变量用于解释路径
- 环境变量的配置文件
- /etc/profile 系统环境变量默认保存文件
- /etc/bashrc login shell 执行初始化的配置文件
5.转义与引用
- 特殊符号
- 转义符 /
- 引用符号 ' ' 和 " "
6.循环
- while 循环
- while 循环根据 while 判断结果确定是否继续执行
- 判断的结果为命令的返回值,如果为 0 则循环继续执行(shell中,执行成功的命令会返回 0 )
- 判断结果一直为真 "0",则为死循环
- for 循环
- Shell的 for 循环使用遍历方式,for...in... 格式
- for 支持c语言写法,需要使用 (()) 格式
- 支持 break、continue 进行循环控制
- for 循环支持嵌套使用
7.函数
- 函数的定义
- 对代码进行封装,重复利用
- 函数的定义方法是 函数名 (){}
- 函数的使用
- 直接使用 函数名
8.计划任务
- 一次性计划任务
- 周期性计划任务
- 查看 crontab -l
- 编辑 crontab -e
9.运算符
- 运算符号
- + - * / %: 加 减 乘 除 取余
- Shell 运算的弊端
- 支持整数运算,但和编译语言比起来效率很低
- 对浮点运算支持不好
10.测试与判断
- test 测试
- 可以书写为 [ ]
- 可以使用 [[ ]] 扩展格式
- 文件测试
- 数字比较
- if 判断
- 基本原理:根据命令的返回值是否为 0 进行分支判断
- 支持 if...else 写法
- 支持 if 嵌套写法
- case 分支
- case 分支一般作为 if 判断的补充
- case 分支的结束符号是 " ;; ",它是" ; "的转义形式
(五)文本操作篇
1.正则表达式与文本搜索
-
元字符大全
. 除 \n \r外的单个字符 * 匹配前面的子表达式任意多次 [...] 括号内任意一个字符 ^ 行开始 $ 行结尾 \ 转义 {...} 匹配出现的次数 + 匹配前面的正则表达式出现一次或多次 ? 匹配前面的正则表达式出现零次或一次 | 并列匹配 () 分组 POSIX 字符类
2.sed
- sed基础
-
基本语法
sed 'cmd' filename sed -e 'cmd' -e 'cmd' filename
-
sed的工作方式
模式空间
-
- sed基础命令
- s 替换
- d 删除
- a 追加
- i 插入
- c 更改
- n 下一步
- r 读文件
- w 写文件
- q 退出
- y 替换
- p 打印
- sed高级命令
-
多行命令
N 将多行追加到模式空间进行处理 D 删除多行模式空间的第一个字符至第一个换行符,并返回到脚本的开头执行 P 输出模式空间中的第一个字符至第一个换行符
-
保持空间模式
h 将模式空间的内容存储至保存空间,并覆盖保持空间的内容 H 将模式空间的内容存储至保存空间,并追加到保持空间 g 将保持空间的内容存储至模式空间,并覆盖模式空间的内容 G 将保持空间的内容存储至模式空间,并追加到模式空间 x 交换模式空间和保持空间的内容
-
条件与分支
: 标签 b branch命令用于在脚本中将控制权转移到另一行,如果没有指定的标签就转移到脚本的结尾 t 测试命令,如果当前匹配地址的行出现了成功替换,test 命令就转到标签处,如果没有指定标签就转移到脚本的结尾
-
3.AWK
- AWK的工作方式
- BEGIN{} 模式用于处理文件前的预处理
- {} 模式用于对文件每行进行处理
- END{} 模式用于处理完文件之后的操作
- 运算符
- 算术运算符
- 关系运算符
- 布尔运算符
- 循环
- 支持 while 循环
- 支持 for 循环
- 支持 break、continue
- 系统变量
- FS 字段分隔符
- OFS 输出字段分隔符
- RS 记录分隔符
- ORS 输出记录分隔符
- 条件
- 和 c 语言用法相似
- 语法格式为:if(判断)
- 支持 if...else... 用法
- 支持 if 嵌套
- 函数
- 算术函数
- 随机函数
- 字符串函数