Linux与shell脚本和编程 | 青训营笔记

59 阅读2分钟

Linux

  • 计算机由五大基本单元组成:控制器,运算器,存储器单元,输入单元和输出单元。
  • 操作系统 OS 管理和控制计算机系统中的硬件和软件,用于在用户和系统硬件之间传递信息。
  • Linux系统一般有四个主要部分:内核,shell,文件系统,应用程序。
  • Linux体系结构主要分为用户空间和内核空间。
  • 内核:
  1. 是硬件与软件的中间层。
  2. 是一个资源管理程序。
  3. 提供一组面向系统的命令。
  • 进程调度:是指操作系统按照某种策略或规则选择进程占用CPU进行的过程。
  • 状态:
  1. R 可执行状态
  2. S 可中断睡眠状态
  3. D 不可中断睡眠状态
  4. T 暂停或跟踪状态
  5. Z 退出状态 进程变为僵尸进程
  6. X 退出 进程即将被销毁
  • 进程调度原则:
  1. 一个CPU核同一时间只能运行一个进程。
  2. 每个进程都有近乎相等的执行时间。
  3. 进程执行消耗时间和进程量成正比。

Shell脚本和编程

  • 变量类型:
  1. 自定义变量:作用域为当前shell,声明方式为=,规范默认为字符串,也可以为整形等。
  2. 环境变量:当前shell及子shell,声明方式为export。
  3. 系统环境变量:所有shell,声明方式为启动加载。
  • 管道:管道符为 | ,作用是将前一个命令的结果传递给后面的命令。语法为cmd1 | cmd2 要求:管道右侧的命令必须能接受标准输入才可以,比如grep,ls,mv等不能直接使用,可用xargs预处理。
  • 判断命令:shell中提供了tex,[],[[]],三种判断的符号,可用于整数测试,字符串测试,文件测试。
  1. 整数测试:text n1eqn1 -eq n2 等于 text n1ltn1 -lt n2 小于 text n1gtn1 -gt n2 大于
  2. 字符串测试:test-z stra判断是否为空testnstr_a 判断是否为空 test -n str_a 判断是否非空
    注意括号前后要有空格符号。
  • shell展开:大括号展开:
    字符串 a{b,c,d}e => ade ace ade
    表达式序列 {1..5} => 1 2 3 4 5
    {1..5..2} => 1 3 5 调增量
    {a..e} => a,b,c,d,e