BASH中的通配符(wildcard)

*:任意长度的任意字符。
?:任意单个字符
[]:匹配范围
[^]:排除匹配范围
[:alnum:]:所有字母和数字
[:alpha:]:所有字母
[:digit:]:所有数字 
[:lower:]:所有小写字母
[:upper:]:所有大写字母 
[:blank:]:空白字符和TAB制表符
[:space:]:包括空白字符、TAB制表符(\t)、换页(\f)
[:cntrl:]:所有控制字符 
[:graph:]:可打印并可看到的字符。空格是可打印的,但是不是可看到的。  
[:print:]:所有可打印字符
[:punct:]:所有标点符号,非字母、数字、控制字符和space字符。  
[:xdigit:]:十六进制数的字符。


正则表达式

.:表示匹配任意单个字符。
*:表示匹配前面的字符任意次,包括0次。
.*:表示匹配任意长度的任意字符。
?:可能需要使用反斜线进行转义才可以,表示的是前面的字符出现0次或1次。\?
\{n,m\}:匹配前面字符出现n到m次。
\{n,\}:匹配前面字符出现n次以上。
\{n\}:匹配前面字符出现n次。
^:匹配行首,此字符后面的内容必须出现在行首。
$:匹配行尾,此字符后面的内容必须出现在行尾。
^$:匹配空白行。
[ ]:表示指定匹配范围内的任意单个字符。
[^ ]:表示指定范围外的任意单个字符。
注意:使用下面的匹配时,要使用两个方括号,如[[:alpha:]]
[:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
[:digit:]  [:graph:]  [:lower:]  [:print:]
[:punct:]  [:space:]  [:upper:]  [:xdigit:]
\<:表示其后面的任意字符必须作为单词的首部出现。
\>:表示其前面的任意字符必须作为单次的尾部出现。
上述的两个,也可以用\b来表示。
如:\broot表示root出现在词首。root\b表示root出现在词尾。
\<root\>:表示的root单次必须出现在词首和词尾。
\(\):将字符串分组,作为一个整体。