Shell基础概念
Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。 shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质
命令和语法
变量类型
运算符和引用
管道
将前一个命令的结果传递给后面的命令
语法:cmd1|cmd2
重定向
- 输出重定向符号
-
- >:覆盖写入文件
- >>:追加写入文件
- 2>:错误输出写入文件
- &>:正确和错误输出统一写入到文件重
- 输入重定向符号
-
- <
- <<
判断命令
- shell中提供给了test,【,【【三种判断符号
- 用于:
-
- 整数测试
- 字符串测试
- 文件测试
- 语法:
-
- test condition
- 【condition】
- 【【condition】】
分支语句
循环语句:
函数:
- funcName(){echo “abc”;}
- function funcName(){echo“abc”}
模块化:
- 模块化的原理是在当前shell内执行函数文件
- 方式: source 【函数库的路径】
常用命令
执行过程和原理
- 执行
-
- shell脚本一般以.sh结尾,也可以没有,这是一个约定;第一行需要指定用什么命令解释器来执行
- 启动方式
- 执行过程
-
- 字符解析
- shell展开,例如{1..3}解析为1 2 3
- 重定向,将stdin、stdout、stderr的文件描述符进行指向变更
- 执行命令
-
-
- builtin直接执行
- 非builtin使用&path查找,然后启动子进程执行
-
-
- 收集状态并返回
- shell展开
-
- 大括号展开{...}
- 波浪号展开 ~
- 参数展开
- 命令替换
- 数学计算 $((..))
- 文件名展开 *?[..] 外壳文件名模式匹配
调式和前端集成
- 调试
-
- 普通log,使用echo、printf
- 使用set命令
- vscode debug插件
- vscode配置
-
- shellman:代码提示和自动补全
- shellcheck:代码语法校验
- shell-format:代码格式化
- Bash Debug:支持单步调试
-
-
- 安装vscode插件
- 编写launch.json文件
- 升级bash到4.x以上版本
-
- 前端集成
-
- node中通过exec、spawn调用shell命令
- shell脚本中调通node命令
- 借助zx等库进行javascript、shell script的融合