Linux与shell脚本和编程 | 青训营笔记
Linux
- 计算机由五大基本单元组成:控制器,运算器,存储器单元,输入单元和输出单元。
- 操作系统 OS 管理和控制计算机系统中的硬件和软件,用于在用户和系统硬件之间传递信息。
- Linux系统一般有四个主要部分:内核,shell,文件系统,应用程序。
- Linux体系结构主要分为用户空间和内核空间。
- 内核:
- 是硬件与软件的中间层。
- 是一个资源管理程序。
- 提供一组面向系统的命令。
- 进程调度:是指操作系统按照某种策略或规则选择进程占用CPU进行的过程。
- 状态:
- R 可执行状态
- S 可中断睡眠状态
- D 不可中断睡眠状态
- T 暂停或跟踪状态
- Z 退出状态 进程变为僵尸进程
- X 退出 进程即将被销毁
- 一个CPU核同一时间只能运行一个进程。
- 每个进程都有近乎相等的执行时间。
- 进程执行消耗时间和进程量成正比。
Shell脚本和编程
- 自定义变量:作用域为当前shell,声明方式为=,规范默认为字符串,也可以为整形等。
- 环境变量:当前shell及子shell,声明方式为export。
- 系统环境变量:所有shell,声明方式为启动加载。
- 管道:管道符为 | ,作用是将前一个命令的结果传递给后面的命令。语法为cmd1 | cmd2
要求:管道右侧的命令必须能接受标准输入才可以,比如grep,ls,mv等不能直接使用,可用xargs预处理。
- 判断命令:shell中提供了tex,[],[[]],三种判断的符号,可用于整数测试,字符串测试,文件测试。
- 整数测试:text n1−eqn2 等于 text n1−ltn2 小于 text n1−gtn2 大于
- 字符串测试:test-z stra判断是否为空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