05_01_egrep及扩展正则表达式
REGEXP:正则表达式
基本正则表达式:Basic REGEXP
grrep:使用基本正则表达式定义的模式来过滤文本的命令
-E:使用扩展正则表达式
-A n:显示匹配到的行以及其下的n行;
-B n:显示匹配到的行以及其上的n行;
-C n:显示匹配到的行和其上与下各n行;
注:grep -E就相当于egrep命令,两者是一样的,可以看做egrep是grep -E的别名
扩展正则表达式:Extended REGEXP
在扩展正则表达式中, 字符匹配以及锚定字符与基本正则表达式中用法是一样的;
次数匹配略有不同,其中:
*:一样,表示匹配前面字符任意次;
?:在扩展正则表达式中不用加反斜杠转义,用法仍一样;
+:匹配其前面的字符至少一次;
{m,n}:在扩展正则表达式中不用加反斜杠转义;
分组字符:
同样使用括号()但是也不需要使用转义符;
或者字符:
| :例如C | cat 表示匹配C或cat字符二者其中之一
例如显示所有以数字结尾且文件名中不包含空白的文件:
ls *[^[:space:]]*[0-9]
05_02_bash脚本编程之一 变量、变量类型等
fgrep :fast grep 快速搜索,不支持正则表达式,但是执行速度快;
shell编程:
编译器,解释器
编程语言:机器语言,汇编语言,高级语言
静态语言:编译型语言
强类型(变量),事先转换成可执行格式,例如:
C、C++、JAVA、C#
动态语言:解释型语言,on the fly
弱类型
边解释边执行,例如:
PHP、SHELL、python、perl
面向过程::Shell,C
面向对象:JAVA、python、perl,C++
变量:内存空间,命名
内存:编制的存储单元
变量类型:事先确定数据的存储长度和格式,分为:
字符型
数值型,又分为:
整型,浮点型(小数)
布尔型(真和假)
逻辑运算:与,或,非,异或
与:两个条件都需要满足,才符合条件,例如 :
1 & 0 = 0 ; 0 & 1 = 0 ; 0 & 0 = 0 ; 1 & 1 =1
或:二选一,两个条件中只要有一个满足即可
非:用叹号!表示,即为
!真=假 ; !假=真
强类型语言:变量在使用前,必须事先声明,甚至还需要初始化;
弱类型语言:变量用时声明,甚至不区分变量类型;
shell:是一个弱类型的编程语言
变量赋值:VAR_NAME(变量名)=value(值)
bash变量类型分为:环境变量, 本地变量(局部变量),位置变量,特殊变量
本地变量,声明:
VARNAME=value:作用域为整个bash进程;
局部变量,声明:
local VARNAME=value:作用域为当前代码段;
环境变量,声明:
export VARNAME=value:作用域为当前shell进程及其子进程;
位置变量:
$1,$2,...
特殊变量:
$?:用于保存上一个命令的执行状态返回值;
程序执行,可能有两类返回值:
1、程序执行结果;
2、程序状态返回代码(0-255)
0 :正确执行
1-255 :错误执行,1,2,127错误代码是系统预留的
引用变量:
${VARNAME}:其中括号在不影响引用时可省略;
撤销变量:
unset VARNAME(变量名)
查看当前shell中变量:
set
脚本
命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
#!/bin/bash (shebang:魔数,shell脚本第一行都为这个,注意这个路径是运行用户所在地bash路径)
# 以#开头的为注释行,不执行
注:脚本在执行时会启动一个子shell进程:
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量