今天是参加笔记活动的的第8天
Shell脚本和编程
Shell基础概念
概念
终端
获取用户输入,展示运算结果的硬件设备
tty
teletypeWriter的简称,和终端等价,早期指电打印机,在Linux中是输入/输出环境
终端模拟器
Mac Terminal,iTem2等,关联虚拟tty的输入输出软件
Shell
command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端
Bash
shell的一种具体实现
物理终端 => 软件终端 tty => 终端模拟器 => shell tty或者说终端最开始指的是获取用户输入并输出的物理设备, 比如电传打字机 在 linux 中是接收用户输入、输出结果的终端仿真软件, 比如我们用的 mac terminal、 iterm2 等, 更强输入辅助功能、画面绘制输出的模拟终端器; 而 tty 变成一个虚拟概念, 是linux的一个程序,每个终端模拟器关联一个虚拟 tty ,和内核打交道。 我们可以在 终端模拟器中输入 tty 查看关联到的虚拟 tty bash是 shell的一种具体实现, 可以理解成 实例和类的关系
发展
除了替代 v6 shell,sh 还有几个优点,把控制流程,循环,变量引入了脚本,提供了一种更具功能性的语言 主流 Linux 系统使用的 shell,许多都以它为锚点。 bash是 sh 的超集,可以直接执行大部分 sh 脚本。 Bash 在兼容 Bourne shell 脚本编程的同时,集成了 Korn shell 和 C shell 的功能,包括命令历史,命令行编辑,目录堆栈(pushd 和 popd),一些实用环境变量,命令自动补全等。
构成
shell 不仅提供了与内核和设备交互的方法,还集成了一些今天软件开发中通用的设计模式(比如管道和过滤器), 具备控制流程,循环,变量, 命令查找的机制 既是命令解释器, 也是一门编程语言, 作为命令解释器, 它提供给用户接口,使用丰富的 GNU 工具集, 第三方的或者内置的, 比如 cd、pwd、exec、test、 netstat 等等