Linux通配符、元字符、转义符和正则表达式详解

通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。
shell的通配符
在这里插入图片描述

shell meta字符(元字符)

其实shell中不光有通配符,还有元字符,常用元字符如下:

字符                                   说明

IFS                                   由 <space><tab><enter> 三者之一组成(我们常用 space )
CR                                    由 <enter> 产生
=                                     设定变量
$                                     取变量值或取运算值
>                                     重定向 stdout(输出重定向)
<                                     重定向 stdin
|                                     管道符号
&                                     重导向 file descriptor ,或将命令置于背景执行
( )                                   将其内的命令置于 nested subshell 执行,或用于运算或命令替换
{
    
     }                                   将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围
;                                     在前一个命令结束时,而忽略其返回值,继续执行下一个命令
&&                                    在前一个命令结束时,若返回值为 true,继续执行下一个命令
||                                    在前一个命令结束时,若返回值为 false,继续执行下一个命令
!                                     运算意义上的非(not)的意思
#                                     注释,常用在脚本中
\                                     转移字符,去除其后紧跟的元字符或通配符的特殊意义

1、3 转义字符
有时候,我们想让 通配符,或者元字符 变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。 shell提供转义符有三种。

字符                                   说明
‘’(单引号)                          硬转义,其内部所有的shell 元字符、通配符都会被关掉。
“”(双引号)                         软转义,其内部只允许出现特定的shell 元字符:$用于参数替换 `(反单引号,esc键下面)用于命令替换
\(反斜杠)                          又叫转义,去除其后紧跟的元字符或通配符的特殊意义

正则表达式是用来匹配字符串的,针对文件内容的文本过滤工具里,大都用到正则表达式,如vi,grep,awk,sed等。
这篇文章只针对Linux下的文本过滤工具的正则表达式进行讨论,简单来说,正则表达式更像是对文件或文件内容进行精确筛选
在这里插入图片描述
如果想将上述字符用作普通字符,就需要在它们前面加上\字符。例如,如果想使用$字符,你需要将它写为$在方括号中还可以使用一些有用的特殊匹配模式,如下:在这里插入图片描述
另外,如果指定了用于扩展的-E选项,那些用于控制匹配完成的其他字符可能会遵循正则表达式的规则,对于grep命令,我们还需要在这些字符前面加上,下表是扩展部分一览:

在这里插入图片描述
总结:3、通配符和正则表达式比较
(1)通配符和正则表达式看起来有点像,不能混淆。可以简单的理解为通配符只有*,?,[],{}这4种,而正则表达式复杂多了。
(2)*在通配符和正则表达式中有其不一样的地方,在通配符中 可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。

猜你喜欢

转载自blog.csdn.net/givenchy_yzl/article/details/114627372