学习Shell的价值:
Shell基础概念、发展、构成
基本概念
- 终端:获取用户输入,展示运算结果的硬件设备
- tty:和终端等价,早期指电传印记,在Linux是输入/输出环境
- 终端模拟器:Mac Terminal 、 iTerm2 等,关联虚拟tty的输入输出软件
- Shell:处理来自终端模拟器的输入,解释执行之后输出结果给终端
- Bash:shell的一种具体实现
Shell语法和命令
变量
自定义变量
declare变量
系统环境变量
配置文件加载
运算符和引用
管道
管道与管道符 | ,作用是将前一个命令的结果传递给后面的命令
语法:cmd1 | cmd2
要求:管道右侧的命令必须能接受标准输入才行,比如 grep 命令,但是 Is 、 mv 等不能直接使用,可以使用 xargs 预处理
注意:管道命令仅仅处理 stdout ,对于 stderr 会予以忽略,可以使用 set -o pipefail 设置 shell 遇到管道错误退出
重定向
判断命令
shell中提供了 test、 [ 、 [[ 三种判断符号 ,可用于:
语法:
- test condition
- [ condition ]
- [[ condition ]]
注意:
- 中括号前后要有空格符
- [ 和 test 是命令,只能使用自己支持的标志位, 、 = 只能用来比较字符串
- 中括号内的变量,最好都是用引号括起来
- [[ 更丰富,在整型比较中支持 、 = ,在字符串比较中支持 =~ 正则
分支语句
循环
函数
模块化
模块化的原理是在当前 shell 内执行函数文件,方式: source [函数库的路径]
常用命令
执行过程和原理
执行
执行过程
shell展开
调试和前端集成
调试
- 普通 log ,使用 echo 、 printf
- 使用 set 命令
- vscode debug 插件
VSCode 插件配置