终端:附着在终端的接口程序:
GUI:KDE, GNome, Xfce
CLI:/etc/shells,
bash特性之:命令hash(加速命令查找的机制)
作用:缓存此前命令的查找结果:key-value
key:搜索键
value:值
hash命令:
hash:列出
hash -d COMMAND:删除
hash -r:清空
bash的特性之:变量
程序描述方式1:指令+数据
指令:由程序文件提供;
数据:IO设备、文件、管道、变量等
程序描述方式2:算法+数据结构
变量:变量名+指向的内存空间
变量赋值:name=value
变量类型:定义了变量的存储格式、表示数据范围、参与的运算
编程语言:
强类型变量语言
弱类型变量语言:bash
bash把所有变量统统视作字符型;不支持浮点数据
bash中的变量无需事先声明;相当于,把声明和赋值过程同时实现
声明:定义变量的类型,变量名
变量替换:把变量名出现的位置替换为其所指向的内存空间中数据;
变量引用:${var_name}, 多数情况下可省略{}
变量名:变量名只能包含数字、字母和下划线,而且不能以数字开头;
变量名命名规则:见名知义,命名机制遵循某种法则;不能够使用程序的保留字,例如if, else, then, while等等;
bash变量类型:
- 本地变量:作用域仅为当前shell进程;
- 环境变量:作用域为当前shell进程及其子进程;
- 局部变量:作用域仅为某代码片断(函数上下文);
- 位置参数变量:当执行脚本的shell进程传递的参数;
- 特殊变量:shell内置的有特殊功用的变量,如$?
本地变量:
变量赋值:name=value
变量引用:${name}, $name
查看变量:set
撤销变量:unset name(此处非变量引用)
环境变量:
变量赋值:
(1) export name=value
(2) name=value
export name
(3) declare -x name=value
(4) name=value
declare -x name
变量引用:${name}, $name
bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境
查看环境变量:export, declare -x, printenv, env
撤销环境变量:unset name
只读变量:
(1) declare -r name
(2) readonly name
只读变量无法重新赋值,并且不支持撤销;存活时间为当前shell进程的生命周期,随shell进程终止而终止;
bash特性之多命令执行:
使用格式:~]# COMMAND1; COMMAND2; COMMAND3; ...
逻辑运算:
运算数:真(true, yes, on, 1)
假(false, no, off, 0)
与:
1 && 1 = 1
1 && 0 = 0
0 && 1 = 0
0 && 0 = 0
或:
1 || 1 = 1
1 || 0 = 1
0 || 1 = 1
0 || 0 = 0
非:
! 1 = 0
! 0 = 1
短路法则:
~]# COMMAND1 && COMMAND2
COMMAND1为“假”,则COMMAND2不会再执行;
否则,COMMAND1为“真”,则COMMAND2必须执行;
~]# COMMAND1 || COMMAND2
COMMAND1为“真”,则COMMAND2不会再执行;
否则,COMMAND1为“假”,则COMMAND2必须执行;