目录
一、符号
1.1 引号
1.1.1 单引号(' ')
1.1.2 双引号(" ")
1.1.3 反引号(` `)
1.2 通配符
1.2.1 通配符 " * "
1.2.2 通配符 " ? "
1.2.3 通配符 " [ ] "
1.2.4 通配符 " [!] "
1.3 连接符
1.3.1 " ; " 连接符
1.3.1 " && " 连接符
1.3.1 " || " 连接符
二、正则表达式
2.1 元字符
2.1.1 基础正则表达式元字符
2.1.2 扩展正则表达式元字符
一、符号
Shell中符号有着各种各样的作用,如引发、通配符、连接符等,借助这些符号,可以帮助用户完成更复杂的功能
1.1 引号
元字符是指那些在正则表达式中具有特殊处理能力的字符,如 $、\ 、> 等字符,Shell中由三种引号:单引号、双引号、反引号
1.1.1 单引号(' ')
注:单引号必须成对存在,不能在两个单引号之间单独使用一个单引号
如:NUM=100 | echo $NUM | echo '$NUM' (定义变量NUM,赋值并输出)
1.1.2 双引号(" ")
在双引号中单引号可以单个出现
如 echo " $NUM "
1.1.3 反引号(` `)
可以进行命令替换,反引号和双引号可以结合使用,但不能与单引号结合使用,因为单引号的屏蔽功能会屏蔽掉反引号的功能
如:echo " today is ` date `" (输出系统当前时间)
echo ' today is ` date `'
1.2 通配符
Shell 通配符一般用于数据处理或文件名匹配
1.2.1 通配符 " * "
通配符" * " 可匹配多个字符串
如:ls -d /etc/sys* (匹配 /etc/路径下所有 以 sys字符串开头的文件)
-d 表示仅对目标目录进行处理,不递归处理目录中的文件
1.2.2 通配符 " ? "
通配符 " ? "每次只能匹配单个字符串,通常与其他通配符联合使用
如:ls -d /etc/???.conf (匹配 /etc/目录下 以.conf 结尾的三个字符开头的文件)
1.2.3 通配符 " [ ] "
与 "[ ]" 内的任意字符匹配,通常是一个范围
如:ls /etc/[a-d]*.conf
1.2.4 通配符 " [!] "
与 " [! ] "外的任意元素匹配
如:ls /etc/y*[!.conf] (匹配 /etc/目录下 以y开头,不以.conf结尾的文件]
1.3 连接符
Shell中提供用于连接命令的符号,使用这些符号,可以对多条指令按顺序或命令执行结果有选择的执行
1.3.1 " ; " 连接符
会让使用 " ; " 的命令,按顺序依次执行
如:SUM=100; echo "$SUM" ; echo "sum is $SUM"
执行顺序按照排列的先后执行,多用于安装命令
1.3.1 " && " 连接符
使前后命令的执行顺序满足逻辑与关系才能执行符号后面的命令,只有“&&”符号前的执行成功以后才会执行后面的命令
如:cat ./test.txt && echo "目录存在"( 输出 test.txt 文件,如果存在则输出“目录存在”)
1.3.1 " || " 连接符
与“&&” 连接符相反,但符号前面命令执行失败时才会执行后面的命令
如:cat ./test.txt || echo "目录存在"( 输出 test.txt 文件,如果不存在则输出“目录不存在”)
二、正则表达式
正则表达式是预先定义好的一组规则(也称模式),这组规则通常应用于文本搜索与替换中
相关概念:
正则表达式可以对文本进行过滤,因为它定义了一系列元字符,元字符与其他字符组合起来形成了一定的规则,只有符合规则的文本才能被保留下来,否则将会被过滤
2.1 元字符
2.1.1 基础正则表达式元字符
默认在 grep 命令下进行,符合基础正则表达式
(1)限定符 " * "
0次或多次
如:ls hel*o(列出以hel开头 o结尾的文件)
(2)点字符 " . "
单个字符
如:ls he.(列出以 he开头任意【除 ”\n“】字符结尾的文件)
(3)行首定位符 " ^ "
行首的是 ”^“后的字符
如:ls /etc | grep "^sys"(列出 etc目录下以sys开头的文件)
(4)行尾定位符 " $ "
行末的字符,与行首匹配相反
如:ls /ect | grep conf$ (列出 /etc 目录下以conf结尾的文件)
(5)字符组 "[ ] "
用来指定一个字符集合
如: ls ./one | grep test[1-9] (列出 /one 目录下 test开头,数字1-9结尾的文件)
(6)排除型字符组 "[^]"
表示不匹配[]里的字符,用法与 字符组 [^] 相反
2.1.2 扩展正则表达式元字符
扩展正则表达式默认使用的是扩展正则表达式,如果要使用grep,需要使用-E 选项
(1)限定符 " + "
限定符 ” + “ 与 符号 ” * “ 相似,都可匹配其前导字符多次,但 ” * “ 号支持匹配 0次,而限定符 ” + “至少匹配一次
如:ls hel*o(列出以hel开头 o结尾的文件)
ls egrep hel+o
(2)限定符 " ? "
限定前导字符最多出现一次,即前导字符可出现0次或1次
如 ls /etc | egrep "sss?" (列出 etc目录下 sss开头的文件)
(3)" | " 和 "()"符号
" | " 符号用于正则表达式之间的”或“运算,“()”符号一组可选的集合,两组合通常使用,表示一组可选的集合
ls /etc | egrep "(ssh | ssl | ^yum)" (列出ect 目录下 的 ssh或ssl 或yum开头的文件