shell
shell是用户使用Linux的桥梁,连接了用户和Linux内核。我们可以通过shell命令操作和控制操作系统,并且更高效更安全。
shell基础概念
shell是一个命令解释器,同时也是一门编程语言,不仅提供内核和设备交互的办法,还继承了一些设计模式。
作为命令解释器,它提供接口,把用户输入的命令进行解释并送入内核。而作为作为一门编程语言,虽然它没有C、Java那么强大,但是我们熟知的选择、循环、变量、函数等等都是具备的。
shell编程语言
shell是一种脚本语言,它一边执行一边翻译,不会产生可执行文件。编写代码后不需要编译,直接运行即可。
变量
变量类型有三种,自定义变量、环境变量、系统环境变量。
- 自定义变量:作用域是当前的shell,使用
=声明。
变量名=变量值,如num=2
撤销变量:unset 变量名
声明静态变量:readonly 变量
- 环境变量:作用域是当前shell与其子shell,使用
exportdeclare-x声明。使该变量在子shell也可用。
export 变量
declare -x 变量
declare有许多选项,-a、-i等等。带有-的是给变量设定类型属性,+的是取消变量的类型属性。
- 系统环境变量:所有shell,启动加载声明。
运算符和引用
运算符分为算数运算符、逻辑运算符、比较运算符、引号、圆括号、命令连接、后台运行。
- 算数运算符和逻辑、比较运算符,和常识一样。不作赘述。
- 引号分为双引号、单引号和反引号。
双引号是部分引用,使用双引号时,$、反引号、转义符还是解析为特殊意义
单引号为完全引用,直接输出
反引号是执行命令
- 命令连接三个符号||、&&、;,||前命令返回非0继续执行||符号后的命令。&&要返回为0才继续执行。;是串行执行。
- 后台运行用&符号,让其后的命令在后台运行。
管道
上文所说的运算符执行命令,为了实现互通的需求,就需要使用管道。管道将多个程序进行连接,是进程通信的方式之一。