1. 脚本文件的书写格式
- #!/bin/bash 解释器
- <<COMMENT
COMMENT 多行注释 - #单行注释
- 命令代码
2. 脚本文件的各种执行方式
没有执行权限
bash/sh 文件名.sh
具有可执行权限
./文件名.sh
开启子进程执行
bash/sh 文件名.sh
不开启子进程执行
source 文件名.sh
3. 在脚本文件中实现数据的输入和输出
echo
- echo -e + 字符串可以输出字符串里面的转义符号
- \033 或\e 后面跟不同的代码可以设置不同的终端属性
printf
- +右对齐 -左对齐
read
wc -l: 统计数据行数
ss -nutlp: 查看linux服务器所有服务监听端口列表
4.输入与输出的重定向
在Linux 系统中输出可以分为标准输出和标准错误输出。
- 标准输出的文件描述符为1
- 标准错误输出的文件描述符为2
- 标准输入的文件描述符则为0
使用>和>>把输出重定向到文件 - 1>或1>>可以将标准输出信息重定向到文件(1 可以忽略不写,默认值就是1)
- 2>或2>>将错误的输出信息重定向到文件
- &> 可以同时将标准输出和错误输出都重定向到一个文件(覆盖)
- &>> 可以同时将标准输出和错误输出都重定向到一个文件(追加)
- 2>&1 将错误输出重定向到标准正确输出
- 1>&2 将标准正确输出重定向到错误输出
>和>>区别:
- 使用>符号将输出信息重定向到文件,如
果文件不存在,则系统会自动创建该文件,如果文件已经存在,则系统会将该文件的所有内容覆盖 - 使用>>符号将输出信息重定向到文件,如果文件不存在,则系统会自动创建该文件,如果文件已经存在,则系统会将输出的信息追加到该文件原有信息的末尾
/dev/null 是一个黑洞。无论往该文件中写入多少数据,都会被系统吞噬、丢弃。如果有些输出信息是我们不再需要的,则可以使用重定向将输出信息导入该设备文件中
可以使用<符号进行输入重定向。<符号后面需要跟一个文件名,这样可以让程序不再从键盘读取输入数据,而从文件中读取数据。
使用<<符号可以将数据内容重定向传递给前面的一个命令,作为命令的输入
5. 各种引号的正确使用姿势
单引号和双引号
- 双引号的作用是引用一个整体,计算机会把引号中的所有内容当作一个
整体看待。 - 除了可以使用双引号引用一个整体,还可以使用单引号引用一个整体,同时单引号还有另外一个功能,即可以屏蔽特殊符号,\只能转义后面第一个符号
- $$显示当前进程的进程号
- &后台进程
命令替换
``符号(反引号),反引号是一个命令替换符号,它可以使用命令的输出结果替代命令
反引号虽然很好用,但也有其自身的缺陷,比如容易跟单引号混淆,不支持嵌套(反引号中再使用反引号),$()组合符号,功能也是命令替换,而且支持嵌套功能
变量
用户自定义变量
Linux 系统中,自定义变量的定义格式为变量名=变量值,变量名仅是用来找到变量值的一个标识而已,它本身没有任何其他功能。在定义变量时,变量名仅可以使用字母(大小写都可以)、数字和下画线(_)组合,而且不可以使用数字开头
当需要读取变量值时,需要在变量名前添加一个美元符号“$”;而当变量名与
其他非变量名的字符混在一起时,需要使用{}分隔
tr -s "字符" 去除连续重复字符
cut -d "字符" -fn 获取以字符为分隔符第n列字符
unset 变量 删除变量
系统预设变量
数据过滤和正则表达式
grep 命令
grep [选项] 匹配模式 [文件]
正则表达式
扩展正则表达式
posix规范的正则表达式
GNU规范
- \b(边界字符,匹配单词的开始或结尾)
- \B(与\b 为反义词,\Bthe\B 不会匹配单词the,仅会匹配the 在中间的单词,如atheist)
- \w 等同于[_[:alnum:]]
- \W 等同于[^_[:alnum:]]
- \d 任意数字
- \D 任意非数字
- \s 任意空白字符
- \S 任意非空白字符
算式运算符
Shell 支持多种算术运算,可以使用$((表达式))、$[表达式]、let 表达式进行整数的算术运算
使用let 命令计算时,默认不会输出运算的结果,一般需要将运算的结果赋值给变量,通过变量查看运算结果,使用let 命令对变量进行计算时,不需要在变量名前添加$符号。
bc计算器
通过bc计算器的另外两个内置变量ibase(in)和obase(out)可以进行进制转换,ibase 用来指定输入数字的进制,obase 用来设置输出数字的进制,默认输入和输出的数字都是十进制的