1.grep
grep [OPTIONS] PATTERN filename
根据模式搜索文本 并将符合模式的文本显示出来
Pattern模式:文本字符和正则表达式的元字符组合而成匹配条件
选项
-i
: 忽略大小写--color
: 匹配到的字符串加颜色-v --invert-match
:没有被模式匹配到的行-o
: 只显示被模式匹配到的字符串-E
: extended regular expression 扩展正则表达式 = 命令egrep-A --after-context=
: 匹配项后几行-B --before-context=
: 匹配项前几行-C --context
: 匹配项前后几行
2. 正则表达式
元字符:
.
: 任意单个字符[]
: 匹配任意范围内的单个字符[^]
: 匹配任意范围外的单个字符
[:digit:],[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:]
匹配字符个数:
*
: 匹配其前面字符任意次数.*
: 任意长度任意字符\?
: 匹配其前面的字符1次或0次\{m,n\}
: 匹配其前面的字符>=m次 <=n次
位置锚定:
^
: 行首 次字符后面的任意内容必须出现在行首$
: 行尾 次字符后面的任意内容必须出现在行尾\<
: 单词出现在词首\>
: 单词出现在词尾
分组:
\(\)
\1,\2,\3
: 引用前面的分组
3. 扩展正则表达式
次数匹配:
+
: 匹配其前面的字符至少1次
或者
a|b: a或者b
c|Cat 意思是c或者Cat字符 (c|C)at
IPv4:
5类 A B C D E
A: 1-127
B: 128-191
C: 192-223
4.bash
bash变量类型:
- 环境变量
export VARNAME=VALUE
脚本在执行时会启动一个shell进程
对当前shell及其子shell有效 - 本地变量
set VARNAME=VALUE: 作用域为当前代码段 set可以省略
unset VARNAME: 释放变量
使用 VARNAME或 VARNAME引用
[root@localhost tmp]# ANIMAL="pig"
[root@localhost tmp]# echo "The animal is ${ANIMAL}s"
The animal is pigs
- 局部变量
local VARNAME=VALUE: 作用于为当前代码段 - 位置变量
$1,$2,$3....
引用脚本参数
shift n - 特殊变量
$?
:上一个命令执行状态返回值:
$#
: 参数的个数
$*
: 参数列表
$@
: 参数列表
[root@localhost ~]# ls /varr
ls: cannot access /varr: No such file or directory
[root@localhost ~]# echo $?
2
[root@localhost ~]# lss
-bash: lss: command not found
[root@localhost ~]# echo $?
127
[root@localhost ~]# ls
anaconda-ks.cfg demo.sh Downloads post-install Templates Videos
demo Desktop Music post-install.log test
demofile Documents Pictures Public test_dir
[root@localhost ~]# echo $?
0
查询状态返回代码(0-255)
0:正确执行
1-255: 错误执行:1,2,127系统预留
/dev/null: 软件模拟设备, bit bucket,数据黑洞
查看当前shell中的环境变量:
printenv
env
export
条件测试的表达:
[expression]
[[expression]]
test expression
整数比较:
-eq
: 测试两个整数是否相等 $A -eq $B
-ne
: 测试两个整数是否不等: $A -ne $B
-gt
: 大于
-lt
:小于
-ge
: 大于或等于
-le
:小于或等于
字符测试:
==
: 测试是否相等
!=
: 测试是否不等
>
<
-n string
: 测试字符串是否为空
-s string
: 测试字符串是否不空
命令间的逻辑
变量名称: 只能包含字母、数字和下划线,并且不能数字开头:不应该跟系统中已有的环境变量重名
if 判断条件; then
statement1
statement2
…
else
statement3
statement4
fi
shell算数表达式:
A=3
B=5
1. let算术运算表达式
let C=$A+$B
2.$[算术表达式]
C=$[ $A+$B ]
3.$((算数表达式))
C=$(($A+$B))
4.expr算术运算表达式,表达式中各操作数及运算符之间有空格,而且要使用命令引用
C=`expr $A + \$B`
exit: 退出脚本
exit NUMBER: NUMBER代表状态码