这是我参与的笔记创作活动的第2天
基本概念
-
终端:获取用户输入,展示运算结果的硬件设备。
-
tty:teletypeWriter 的简称,和终端等价,早期指电报打印机,当前为一个在 linux 中是输入输出环境。
-
终端模拟器:Mac Terminal、iTerm2 等,关联虚拟 tty 的输入输出软件。
-
Shell:command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端。
-
Bash:Shell 的一种具体实现。
课程重点
- shell 基础和语法
- shell 执行过程和原理
- shell 调试和前端集成
学习shell的价值
- Linux服务器的基本操作和管理
- 前端Node。js服务的进程管理、问题排查、资源监控等运维操作
- 使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署
发展
-
Ken Thompson(来自贝尔实验室)在 1971 年为 UNIX 开发了第一个 shell,称为 V6 shell
-
Stephen Bourne 在贝尔实验室 为 V7 UNIX 所开发的 Bourne shell,即 sh
-
开源组织 GNU 为了取代 Bourne shell 开发的 Bourne-Again shell,即 Bash
构成
shell不仅提供了与内核和设备交互的方法,还集成了一些今天软件开发中通用的设计模式(比如管道和过滤器),具备控制流程,循环,变量,命令查找的机制。
既是命令解释器,也是一门编程语言作为命令解释器它提供给用户接口,使用丰富的GNU工具集,第三方的或者内置的,比如cd、pwd、exec、test、netstat等等
命令和语法
变量
父子shell
当前shell进程就是父进程,当父进程在第三方或核心工具时会启动子进程去执行,执行完后交还给父进程,父进程再继续执行下一条命令。
管道
管道与管道符|,作用是将前一个命令的结果传递给后面的命令
语法:cmd1 | cmd2
要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理