bash特性及bash脚本编程初步

什么是Bash?
Bash:是一个命令处理器,通常运行在文本窗口中,用户键入操作的命令。实质上是一个可执行程序,一个用户的工作环境.Bash还可以从文件中读取和执行命令,称为shell脚本。
什么是shell?
shell是一个命令语言解释器。即你在提示符下输入的每个命令,都由shell先解释,然后传给Linux内核并执行。shell也提供了一些内置命令,类似于DOS的内部命令,也支持调用外部工具.shell也是一个解释型的程序设计语言,也拥有像js类的程序控制结构。
用户是如何与计算机进行交互的?
终端+附着在终端上的用户接口程序。
用户接口程序主要有两类:GUI 和 CLI
GUI :图形化界面,例如 KDE , GNOME , Xfce
CLI : 命令行界面,例如 /etc/shells 包括 bash zsh 和 fish
bash的基础特性之:六点 ①.命令行展开

~:自动展开为用户的家目录,或指定的用户的家目录;

{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
例如:创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,
bash特性及bash脚本编程初步
文章图片

在/tmp目录下创建目录:x_y, x_z, q_y, q_z
bash特性及bash脚本编程初步
文章图片

②命令别名 通过alias命令实现
(1)alias:显示当前shell进程所有可用的别名
(2)alias = NAME=‘VALUE’:定义别名为NAME,代表的命令是VALUE
在命令行定义的别名,只对当前shell进程有效,如果想永久有效,需要定义在配置文件中
③文件名通配:glob bash中用于实现文件名通配:,?,[ ],^
(1)
:任意长度的任意字符:
例如:a*b可能是: aab,aabbb,a12b,所有以a开头,以b结尾
(2)?:任意单个字符:
例如:a?b代表,以a开头以b结尾,中间有且只有一个字符
(3)[ ] :匹配指定范围内任意单个字符:
例如:[0-9]代表0到9的任意一个数字;[a-z]代表a到z任意一个字母,不区分大小写;[A-Z]代表A到Z任 意一个大写字母
(4)^:匹配指定范围外的任意单个字符:
例如:[^0-9]代表非数字
专用字符集合:
[:digit:]:任意数字
[:lower:]:任意小写字母
[:upper:]:任意大写字母
[:alpha:]:任意字母
[:alnum:]:任意数字或字母
[:punct:]:任意标点符号
[:space:]:空格
④命令历史:history
shell进程会在其会话中保存此前用户提交执行过的命令;

bash特性及bash脚本编程初步
文章图片

⑤快捷键 bash基础特性:快捷键
ctrl+a:跳转至命令行行首
ctrl+e:跳转至命令行行尾
ctrl+c:取消命令的执行
ctrl+w: 移除光标前的一个单词
Ctrl+u:删除行首至光标所在处之间的所有字符
ctrl+k:删除光标所在处至行尾的所有字符
Ctrl+l:清屏,相当于clear
ctrl+s:锁定键盘
ctrl+q:解锁键盘
⑥命令补全,路径补全
1.命令查找和补全机制: (1) 查找内部命令; (2) 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名; (3) 给定开头的部分字符串如果能惟一标识某命令程序文件,则直接补全; 不能惟一标识某命令程序文件,再击tab键一次,会给出列表; 2.路径补全 在给定起始路径下,以对应路径下的打头字串逐一匹配起始路径下每个文件: TAB按键; 如果能惟一标识,则直接补全;

bash特性之:命令hash hash 可缓存命令(记录结果次数)key-value 记录命令历史
key:搜索键
value:值
hash命令:
hash:列出
hash -d COMMAND:删除
hash -r :清空
bash的特性之:变量 程序:指令+数据
指令:由程序文件提供;
数据:IO设备、文件、管道、变量
1.bash变量类型:
本地变量:作用域仅为当前shell进程; 环境变量:作用域为当前shell进程及其子进程; 局部变量:作用域仅为某代码片断(函数上下文); 位置参数变量:当执行脚本的shell进程传递的参数; 特殊变量:shell内置的有特殊功用的变量;

2.本地变量:
变量赋值:name=value 变量引用:${name}, $name

bash特性及bash脚本编程初步
文章图片

3.环境变量 1.变量赋值:
(1) export name=value
(2) name=value
export name
(3) declare -x name=value
(4) name=value
declare -x name
变量引用:${name}, $name
export name=farwish# 声明环境变量
env# 查询环境变量
unset name# 删除变量
2.常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
3.环境变量的查看
1 使用echo命令查看单个环境变量。例如:
echo $PATH
2 使用env查看所有环境变量。例如:
env
3 使用set查看所有本地定义的环境变量
【bash特性及bash脚本编程初步】4.撤销环境变量
unset 变量名

    推荐阅读