介绍[54,17]

  bash本身并不支持正则表达式regex, shell下的有些工具是支持解释regex,使用regex的是shell命令和工具, grep,sed,awk.shell 支持通配符,区别于regex,通配是把一个包含通配符的非具体文件名扩展存储在计算机,服务器或者网络上的一批具体文件名的过程.


通配符文件名匹配

  通配符用来匹配文件名,路径名,包括命令, 通常将四种通配方式组合使用。Linux 文件名可使用除/ 外的任何可打印字符(文件名开头和结尾的空格很难识别,除非有意,避免使用空格和tab来命名文件以避免不必要的麻烦)。以. 开头的文件为隐藏文件。


? * [] {} ^ 和内部变量GLOBIGNORE 构成了shell通配的所有内容.

*

匹配零个多个字符(开头的.除外),可匹配其它位置的,可以是空字符串

?

匹配除首字符外的任意单个字符(开头的.除外),且不匹配空

[...]

匹配给出列表或范围中的任意一个字符

[^...]

匹配给出列表或范围外的任意一个字符

{}

表示一组字符串的集合


使用示例

[abcd] 匹配abcd中任何一个字符

[a-h] a-h 中的任意一字符

[0-9]匹配0-9中任何一个数字

[a-zA-Z0-9]

[!0-9]

mkdir/touch  test{a,b}

mkdir/touch  /test/{a,b}

ls [xyz]*.conf


shell 特殊符号  

关于引用quote

  引用是将字符串用引用符号引起来,以防止特殊字符被shell脚本重解释为其他意义,且屏蔽特殊字符的特殊意义,而将其解释为字面意义,用于引用的字符有转义字符\,单引号'' 双引号""

  shell若只想将会被处理的特殊字符当作普通字符处理。bash shell 有三种方法避免字符被shell解释。

其它特殊字符