shell脚本和编程 | 青训营笔记
1 Shell基础概念
概念:
物理终端=>软件终端tty =>终端模拟器=> shell
tty或者说终端最开始指的是获取用户输入并输出的物理设备,比如电传打字机
在linux中是接收用户输入、输出结果的终端仿真软件,比如我们用的 mac terminaliterm2等,更强输入辅助功能、画面绘制输出的模拟终端器;
而tty变成一个虚拟概念,是linux的一个程序,每个终端模拟器关联一个虚拟tty,和内核打交道。我们可以在终端模拟器中输入tty查看关联到的虚拟tty bash是shell的一种具体实现,可以理解成实例和类的关系
发展:
除了替代 v6 shell,sh还有几个优点,把控制流程,循环,变量引入了脚本,提供了一种更具功能性的语言
主流 Linux系统使用的shell,许多都以它为锚点。
bash是sh的超集,可以直接执行大部分sh脚本。
Bash在兼容Bourme shell脚本编程的同时,集成了Korm thell和C shell的功能,包括命令历史,命令行编辑,目录堆栈(pushd和popd),一些实用环境变量,命令自动补全等。
构成:
shell不仅提供了与内核和设备交互的方法,还集成了一些今天软件开发中通用的设计模式(比如管道和过滤器),具备控制流程,循环,变量,命令查找的机制
既是命令解释器,也是一门编程语言,作为命令解释器,它提供给用户接口,使用丰富的GNU工具集,第三方的或者内置的,比如 cd、 pwd、exec、test、netst等等
2 命令和语法
变量:
运算符和引用:
双引号:部分引用,使用这种引用时,$、(反引号)、(转义符)这3个还是会解析成特殊的意义单引号:完全引用,只原样输出
反引号:执行命令
cmd &实现让命令在后台运行
使用方法一的时候,当我们关闭终端,命令就会停止运行。加上nohup可以在关闭终端后不停止命令