Linux bash脚本中的[…]代表什么?

Linux bash脚本中的[…]代表什么?,linux,bash,scripting,Linux,Bash,Scripting,我正在阅读教程,我发现bash脚本使用[…]作为通配符。那么,bash脚本中的[…]到底代表什么呢?除了globbing(“*”和“?”)之外,教程中还使用了正则表达式。例如[a-z]正则表达式将匹配一个小写字符。实际上,通配符就是[abc]。它匹配三个字母中的一个。这是一种正则表达式样式的字符匹配语法;从 […] 匹配任何一个包含的字符。由连字符分隔的一对字符表示范围表达式;使用当前区域设置的排序顺序和字符集在这两个字符(包括)之间排序的任何字符都是匹配的。如果'['后面的第一个字符是'!'或

我正在阅读教程,我发现bash脚本使用[…]作为通配符。那么,bash脚本中的[…]到底代表什么呢?

除了globbing(
“*”
“?”
)之外,教程中还使用了正则表达式。例如
[a-z]
正则表达式将匹配一个小写字符。

实际上,通配符就是
[abc]
。它匹配三个字母中的一个。

这是一种正则表达式样式的字符匹配语法;从

[…]
匹配任何一个包含的字符。由连字符分隔的一对字符表示范围表达式;使用当前区域设置的排序顺序和字符集在这两个字符(包括)之间排序的任何字符都是匹配的。如果
'['
后面的第一个字符是
'!'
'^'
则匹配未包含的任何字符。
'−’可以通过将其作为集合中的第一个或最后一个字符来匹配。
']'
可以通过将其作为集合中的第一个字符来匹配。范围表达式中字符的排序顺序由当前区域设置和
LC\u COLLATE
shell变量(如果设置)的值决定

例如,在默认的C语言环境中,
“[a-dx-z]”
相当于“[abcdxyz]”
。许多语言环境按字典顺序对字符进行排序,在这些语言环境中,
“[a-dx-z]”
通常不等同于
“[abcdxyz]”
;例如,它可能相当于
'[abbcddxxyyz]
。要获得括号表达式中范围的传统解释,可以通过将
LC\u-COLLATE
LC\u-ALL
环境变量设置为值
'C'
来强制使用C语言环境

'['
']
中,可以使用语法
[:class://code>指定字符类,其中class是posix标准中定义的以下类之一:

字符类匹配属于该类的任何字符。word character类匹配字母、数字和字符
'

'['
']
中,可以使用语法
[=c=]
指定等价类,该语法匹配与字符c具有相同排序权(由当前区域设置定义)的所有字符

'['
']
中,语法
[.symbol.]
与排序符号匹配

(重点添加到最常见的使用模式)

          alnum   alpha   ascii   blank   cntrl   digit   graph   lower
          print   punct   space   upper   word    xdigit