我正在阅读这篇教程,发现bash脚本使用[...]作为通配符。那么在bash脚本中,[...]代表什么意思呢?
[...]
匹配方括号中的任意一个字符。由连字符分隔的一对字符表示一个范围表达式;使用当前区域设置的排序顺序和字符集,包括这两个字符之间的任何字符。如果跟在‘[’
后面的第一个字符是‘!’
或‘^’
,则匹配任何未被包含的字符。可以通过将‘−’
作为集合中的第一个或最后一个字符来匹配‘−’
。可以将‘]’
作为集合中的第一个字符来匹配‘]’
。范围表达式中字符的排序顺序由当前区域设置和LC_COLLATE
shell变量的值(如果设置了)确定。例如,在默认的C区域设置中,
‘[a-dx-z]’
等价于‘[abcdxyz]’。许多区域设置按字典顺序对字符进行排序,在这些区域设置中,‘[a-dx-z]’
通常不等同于‘[abcdxyz]’
;例如,它可能等同于‘[aBbCcDdxXyYz]’
。要获得方括号表达式中范围的传统解释,可以通过将LC_COLLATE
或LC_ALL
环境变量设置为值‘C’
来强制使用C区域设置。在
‘[’
和‘]’
之间,可以使用语法[:class:]
指定字符类,其中class是posix标准中定义的以下类之一:
alnum alpha ascii blank cntrl digit graph lower
print punct space upper word xdigit
‘_’
。‘[’
和‘]’
内,可以使用语法[=c=]
指定等价类,它与具有相同排序权重(由当前语言环境定义)的字符c匹配。‘[’
和‘]’
内,语法[.symbol.]
匹配排序符号symbol。在本教程中,它被用于讲解正则表达式以及globbing('*'
和'?'
)。例如,[a-z]
正则表达式将匹配一个小写字母。
实际上,通配符是什么呢?例如[abc]
,它可以匹配三个字母中的任意一个。