- 基础指令
- 正则表达式
- 元字符
- 字符类:空白字符
- 字符类:锚定字符
- 捕获
- 零宽断言
- 特殊字符
- 流程结构
- if判断
- case分支选择
- while循环
- for循环
- until循环
- 流程控制
- 变量
- 数组
- 定义变量类型
- 系统变量
- 变量引用技巧
- test条件判断
- expression为字符串操作
- expression为文件操作
- expression为整数操作
- 两值比较
- 重定向
- 运算符
- 运算符优先级
- 数学运算
- let
- expr
- 数值测试
- bc
- grep
- grep用于if判断
- tr
- tr中特定控制字符表达方式
- 使用示例
- seq
- trap
- awk
- 内建变量
- 内置函数
- awk判断
- awk循环
- awk使用示例
- 取本机IP
- 查看磁盘空间
- 排列打印
- awk经典题
- awk练习题
- awk处理复杂日志
- sed
- 模式空间
- 标签函数
- 引用外部变量
- 使用示例
- 修改keepalive配置剔除后端服务器
- xargs
- dialog菜单
- 窗体类型
- 窗体参数
- 使用示例
- dialog菜单实例
- select菜单
- shift
- getopts给脚本加参数
- tclsh
- expect交互
- ssh后sudo
- ssh执行命令操作
- 交互双引号引用较长变量
- telnet交互
- 模拟ssh登录
基础指令
#!/bin/sh # 在脚本第一行脚本头 # sh为当前系统默认shell,可指定为bash等shell
shopt # 显示和设置shell中的行为选项
sh -x # 执行过程
sh -n # 检查语法
set -e # 若指令传回值不等于0,则立即退出shell
(a=bbk) # 括号创建子shell运行
basename /a/b/c # 从全路径中保留最后一层文件名或目录
dirname # 取路径
$RANDOM # 随机数
$$ # 进程号
source FileName # 在当前bash环境下读取并执行FileName中的命令 # 等同 . FileName
sleep 5 # 间隔睡眠5秒
trap # 在接收到信号后将要采取的行动
trap "" 2 3 # 禁止ctrl+c
$PWD # 当前目录
$HOME # 家目录
$OLDPWD # 之前一个目录的路径
cd - # 返回上一个目录路径
local ret # 局部变量
yes # 重复打印
yes |rm -i * # 自动回答y或者其他
ls -p /home # 区分目录和文件夹
ls -d /home/ # 查看匹配完整路径
time a.sh # 测试程序执行时间
echo -n aa;echo bb # 不换行执行下一句话 将字符串原样输出
echo -e "s\tss\n\n\n" # 使转义生效
echo $a | cut -c2-6 # 取字符串中字元
echo {a,b,c}{a,b,c}{a,b,c} # 排列组合(括号内一个元素分别和其他括号内元素组合)
echo $((2#11010)) # 二进制转10进制
echo aaa | tee file # 打印同时写入文件 默认覆盖 -a追加
echo {1..10} # 打印10个字符
printf '%10s\n'|tr " " a # 打印10个字符
pwd | awk -F/ '{ print $2 }' # 返回目录名
tac file |sed 1,3d|tac # 倒置读取文件 # 删除最后3行
tail -3 file # 取最后3行
outtmp=/tmp/$$`date +%s%N`.outtmp # 临时文件定义
:(){ :|:& };: # fork炸弹,系统执行海量的进程,直到系统僵死
echo -e "\e[32mcolour\e[0m" # 打印颜色
echo -e "\033[32mcolour\033[m" # 打印颜色
echo -e "\033[0;31mL\033[0;32mO\033[0;33mV\033[0;34mE\t\033[0;35mY\033[0;36mO\033[0;32mU\e[m" # 打印颜色
正则表达式
^ # 行首定位
$ # 行尾定位
. # 匹配除换行符以外的任意字符
* # 匹配0或多个重复字符
+ # 重复一次或更多次
? # 重复零次或一次
? # 结束贪婪因子 .*? 表示最小匹配
[] # 匹配一组中任意一个字符
[^] # 匹配不在指定组内的字符
\ # 用来转义元字符
< # 词首定位符(支持vi和grep) <love
> # 词尾定位符(支持vi和grep) love>
x\{m\} # 重复出现m次
x\{m,\} # 重复出现至少m次
x\{m,n\} # 重复出现至少m次不超过n次
X? # 匹配出现零次或一次的大写字母 X
X+ # 匹配一个或多个字母 X
() # 括号内的字符为一组
(ab|de)+ # 匹配一连串的(最少一个) abc 或 def;abc 和 def 将匹配
[[:alpha:]] # 代表所有字母不论大小写
[[:lower:]] # 表示小写字母
[[:upper:]] # 表示大写字母
[[:digit:]] # 表示数字字符
[[:digit:][:lower:]] # 表示数字字符加小写字母
元字符
\d # 匹配任意一位数字
\D # 匹配任意单个非数字字符
\w # 匹配任意单个字母数字下划线字符,同义词是 [:alnum:]
\W # 匹配非数字型的字符
字符类:空白字符
\s # 匹配任意的空白符
\S # 匹配非空白字符
\b # 匹配单词的开始或结束
\n # 匹配换行符
\r # 匹配回车符
\t # 匹配制表符
\b # 匹配退格符
\0 # 匹配空值字符
字符类:锚定字符
\b # 匹配字边界(不在[]中时)
\B # 匹配非字边界
\A # 匹配字符串开头
\Z # 匹配字符串或行的末尾
\z # 只匹配字符串末尾
\G # 匹配前一次m//g离开之处
捕获
(exp) # 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) # 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) # 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言
(?=exp) # 匹配exp前面的位置
(?<=exp) # 匹配exp后面的位置
(?!exp) # 匹配后面跟的不是exp的位置
(?<!exp) # 匹配前面不是exp的位置
(?#comment) # 注释不对正则表达式的处理产生任何影响,用于注释
特殊字符
http://en.wikipedia.org/wiki/Ascii_table
^H \010 \b
^M \015 \r
匹配特殊字符: ctrl+V ctrl不放在按H或M 即可输出^H,用于匹配
流程结构
if判断
if [ $a == $b ]
then
echo "等于"
else
echo "不等于"
fi
case分支选择
case