构成
解释器(用来解析命令)
bash内置命令,例如[ echo let read,可通过man builtin查看所有内置命令
GNU核心工具集 Is mv cat
第三方库 node,python等封装的模块
编程语言
变量(自定义变量,环境变量,系统环境变量),这三者的类型,作用域,声明方式,规范都不同
运算(逻辑运算符,算数运算符)
语句(判断,分支,循环)
函数
运算符和引用
在这里我记录几个我不太熟的
| 类型 | 符号 | 作用 |
|---|---|---|
| 双引号"" | 部分引用,仅仅$ ` \保留作用 | |
| 引号 | 单引号'' | 完全引用,原样输出 |
| 反引号`` | 执行命令 | |
| 圆括号 | (()) | 算数运算 |
| () | 执行命令 | |
| 后台运行 | & | 让命令在后台运行,可与nohup一起使用 |
管道
管道与管道符 丨,作用是将前一个命令的结果传递给后面的命令
语法: cmd1 丨 cmd2
要求:管道右侧的命令必须能接受标准输入才行,如grep命令,ls,mv等不能直接使用,可使用xargs预处理
重定向
输出重定向符号
>:覆盖写入文件
>>:追加写入文件
2>:错误输出写入文件
&>:正确和错误输出统一写入到文件中
输入重定向符号
<,<<
判断命令
shell中你那个提供了 test,[,[[三种判断符号,可用于:
- 整数测试
- 字符串测试
- 文件测试
语法:
- test condition
- [ condition ]
- [[ condition ]]
注意事项:
- 中括号前后要有空格符
- [和test是命令,只能使用自己支持的标志位,<,>,=只能用来比较字符串
- 中括号的变量,最后都是用引号括起来
- [[更丰富,在整形比较中支持<,>,=,在字符比较中支持=~正则
模块化
模块化的原理是在当前shell内执行函数文件,方式:
source [函数库的路径]
常用命令
| 命令 | 部分用途 |
|---|---|
| grep | 查看错误日志:grep -n "ERROR" -A3 -B3 cloudfun.log,统计次数:grep -n "ERROR" -c cloudfun.log |
| sort | 指定分隔符后以第三列进行排序 sort -t " " -k 3 |
| wc | 统计出现的行数,单词数,字符数 wc -lwm |
| head | 查看前十行 head -n 10 cloudfun.log |
| tail | 等待追加内容 tail -f -n 10 cloudfun.log |
| cut | 对数据行的内容进行处理cut -d " " -f 3 |
| find | 文件和目录查找 |
| xargs | 参数处理 |
| which | 查找命令路径 |
感想
因为之前没有接触过shell这部分的知识,所以第一次看时了解还有很多不理解的地方,还是得多敲代码查看相关内容,感谢老师的授课~