Shell基本概念
终端 tty--输入输出设备
shell--命令行解释器
Bash--shell的一种实现
构成:
- 解释器
- bash内置命令:man builtin
- GNU核心工具集:type mv=>/bin/mv
- 第三方库:node、python封装的模块
- 编程语言
- 变量
- 运算
- 语句
- 函数
语法和命令
变量:自定义变量、环境变量declare-x、系统环境变量
配置文件加载:login shell(交互、非交互),non-login shell
运算符和引用
管道和管道符 |,将前一个命令结果传递给后面的命令。grep可以用,is和mv不能直接使用。
重定向,修改标准输入、标准输出和标准错误的文件夹。
判断命令:test、[、[[ 用于整数测试、字符串测试、文件测试
中括号后必须有空格符。[[支持的更丰富。
分支语句:可以将判断合并或者分开。用;;分割,esac结尾。
循环:while循环、until循环、for循环(对列表内容进行循环或者数值方式循环)。
函数:funcName{}{ echo "abc";}、function funcName(){ echo "abc";}。shell自上而下执行,必须先定义函数。return仅表示函数执行状态而不是结果。用local和unset不污染全局执行域。
常用命令(查看日志):grep、sort、wc、head、tail、cut、find、xargs、which
shell执行过程和原理
1,shell以.sh结尾,第一行需要指定用什么命令解释器来启动
#! /bin/bash
#! /usr/bin/env bash
2.启动方式
# 文件名运行
./filename/sh
#解释器运行
bash/filename.sh
# source运行
source.filename.sh
3.执行过程
字符解析--shell展开--重定向--执行命令--收集状态并返回
4.shell展开
大括号展开{...} 波浪号展开~ 参数展开{} 命令替换 数学计算 文件名展开
调试和前端项目集成
1.普通log,使用echo、printf
2.使用set命令
3.vscode debug插件
前端集成
1.exec200kb spwan不会启动子项目进程的区别。node中通过exec、spwan调用shell命令
2.shell调用node命令
3.借助zx库