服务无限,企业乐无优

资深工程师咨询热线

400-8871-651
IT外包图片
新闻中心
技术文章
当前位置:首页 >> 新闻中心 >> 技术文章
通配符
www.it33.com 2014-06-04
可以使用通配符集中保护未包含在层次结构中的资源,例如,可以保护所有以 .log 结尾的文件或者所有以 www 开头的主机名称。表 1 中描述了组成通配符模式的基本元素。




表 1. 通配符元素 
通配符元素 描述 
* 匹配任意长度的字符串,包括斜杠(/) 字符。 
? 匹配任意单字符。 
+ 匹配一次或多次出现的前一元素。 
[字符集合] 匹配作为字符集合中的一份子的单个字符。字符集合是根据 POSIX 通配符扩展规则而指定的。例如,[a-z] 与 a-z 范围中的任何 ASCII 字符相匹配。 
一个字符 精确匹配指定的字符。




使用反斜杠(\)可禁用它后面字符的特殊意义。当需要与单个反斜杠相匹配时,可以使用两个反斜杠(\\)。表 2 显示了一些匹配和不匹配的通配符模式。




表 2. 通配符匹配示例 
模式 
匹配字符串 非匹配字符串 
a* a 
aa 
a quick brown fox 
ba 
q a 
over the dog


a\* a* ab 
a? aa 
al 

aaa


/usr/local/*.log /usr/local/x.log 
/usr/local/app/x.log 
/usr/local/x.log.1 
*.charity.org www.charity.org 
ftp.charity.org 
www.charity.org.com 
[[:alpha:]]+ abcd 
ABCD 
/abcd 
tty0


* * 
(星号之间有空格) 
a b 
abcde ghijk lmnop 
abcd 
空字符串


 




通配符优先级 
对于使用通配符模式的各种资源,Tivoli Access Manager for Operating Systems 必须确定将应用何种通配符模式。例如,假设有两种模式:


/usr/local/*.log





/usr/local/user1/*.log


字符串 /usr/local/user1/x.log 与这两种模式都匹配。


为了解决这种模棱两可的情况,应用了优先级规则。模式越具体,其优先级也越高。根据这种原则,/usr/local/user1/x.log 在与 /usr/local/*.log 模式相匹配之前先与 /usr/local/user1/*.log 模式相匹配。由于找到一个匹配项,任何可应用于匹配此模式的对象的策略都将适用。


表 3 显示了通配符元素的优先级。表中较高位置的元素优先于表中较低位置的元素。




表 3. 通配符元素优先级规则 
优先级 元素 示例 
1 精确字符 a, \*, \\ 
2 字符范围 [Aa], [[:digit:]] 
3 任意字符 ? 
4 重复的精确字符 a+ 
5 重复的字符范围 [Aa]+, [[:digit:]]+ 
6 重复的任意字符 ?+ 
7 任意字符串 *




根据资源的种类,将通过从开始到结束(或者相反方向)逐个元素比较模式来确定优先级。匹配文件名称的模式是从开始比较到结束。匹配主机名称的模式是从结束比较到开始。


除了认为相同的两种模式之外,将认为较长的模式比较短的模式更具体,除非较长的字符串是由于星号(*)而较长。




通配符优先级的示例 
表 4 显示了按优先级从最高到最低排列的文件名和主机名通配符模式。




表 4. 通配符模式优先级示例 
优先级 文件名称模式 主机名称模式 
1 log/0[0-9]/error www.[a-z]tv.com 
2 log/0?/error www.?tv.com 
3 log/0*/error www.*tv.com 
4 log/[0-9]+/error.1 www-help.[a-z]+v.com 
5 log/*/error.1 www-help.*v.com 
6 log*/error.1 www-help.*.com 
7 log*/error www.*.com 
8 log*/error* *www.*.com 
9 log* *.com 
10 * *




当两个模式之间的唯一差别是字符集合中指定的字符时,将通过逐字比较包含模式的两个字符串来确定优先级。仅在要匹配的字符集包含一些相同字符时才必须考虑这一点。如果在两个集合中没有公共字符,则任一给定的字符串最多只能匹配这两个模式中的一个。