介绍[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解释。
其它特殊字符
转载于:https://blog.51cto.com/adelphos/1576530