科技微讯

理解 glob-patterns

Malik Browne维基百科

glob 起源

glob 是 global 的简称,起源于 1969 年某个版本的 unix 系统,这个系统有一个位于 /etc/glob 的程序。这个程序的作用是:如果一个 shell 命令中带有 *? 这两个字符,就把这个命令传递给 /etc/glob 程序,glob 会对 *? 这两个特殊字符进行解释,从而为这个 shell 命令扩展出一个参数列表,最后把这个参数列表传入这个 shell 命令进行执行。

如果你看不懂这段话,可以看下面这个例子:

glob-example

上图显示在桌面有一个 tt 文件夹,通过 ls 列出了这个文件夹的所有文件,可以看到有 png、js、md 等多种类型的文件。如果我希望仅列出所有 .md 后缀的文件,只需执行 ls *.md。这时候 ls *.md 会被传递到 /etc/glob 程序,glob 就会把 * 解释为 markdownreadme,从而获得了一个参数列表 [markdown.md, readme.md],把这个参数列表重新传入 ls 去执行,于是就执行了:ls markdown.mdls readme.md

现在的 glob 主要用来匹配文件名,使用相当广泛,例如 redis 用它匹配 key,jest 的 testMatch 用它匹配文件。

glob 语法

glob 的语法主要涉及以下 3 个通配符:

以下 3 个字符不是通配符,但在 glob 中也有特殊含义:

有一个叫 glob tool 的在线 glob 测试工具,可以让你实时测试你写的 glob 语句的效果。

thumbsup0
thumbsdown0
暂无评论