Shell脚本与编程丨青训营笔记

81 阅读2分钟

构成

解释器(用来解析命令)

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这部分的知识,所以第一次看时了解还有很多不理解的地方,还是得多敲代码查看相关内容,感谢老师的授课~