操作系统知识地图-基础知识篇(下)

接《操作系统知识地图-基础知识篇(上)》

(四)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 嵌套
  • 函数
    • 算术函数
    • 随机函数
    • 字符串函数

你可能感兴趣的:(操作系统知识地图-基础知识篇(下))