模式匹配全解析:bash与zsh的技巧与应用
在命令行操作中,模式匹配是一项强大的工具,它能帮助我们更高效地查找和处理文件。bash和zsh作为常用的shell,都提供了丰富的模式匹配功能。下面将详细介绍这些功能及其使用方法。
1. 基本规则与负模式匹配
- 目录分隔符规则 :在括号内不能使用斜杠作为目录分隔符,因为模式匹配仅针对每个目录内的文件进行。不过,我们可以在文件名的多个部分使用模式,例如
/@(usr|var)/@(spool|lib)/*。 - 负模式匹配 :
!(expr)形式可以匹配除expr中模式之外的任何内容,expr可以是由竖线分隔的替代列表。例如:
$ echo !(a)*
a aone aonetwo aonetwoonetwo
这里看似不符合预期,但实际上匹配器先找到与 !(a) 匹配的最长字符串,再匹配星号。 !(a) 可以匹配除 a 之外的任何字符串,不一定是单个字母。更常见的用法是匹配整个文件模式,如 !(*.o) 可以匹配所有不以 .o 结尾的文件。
在zsh中,可通过开启 ksh_glob 选项来使用ba
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



