news 2026/2/26 20:33:27

-g GLOB, --glob=GLOB 这句话是什么意思? -g就是全局? --glob =GLOB 是什么意思?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
-g GLOB, --glob=GLOB 这句话是什么意思? -g就是全局? --glob =GLOB 是什么意思?

-g GLOB, --glob=GLOB 这句话是什么意思? -g就是全局? --glob =GLOB 是什么意思?

这是一个非常好的问题!很多初学者容易在这里产生误解。

这句话是命令行工具的标准文档格式,我们把它拆解开来逐个解释:

1.-g是 "Global"(全局)吗?

❌ 不是。

  • -g是单词"Glob"的缩写。

  • 含义:它指的是“通配符模式” (Glob Pattern)

  • 用途:它是用来告诉ripgrep:“只搜索符合这个模式的文件” 或者 “忽略符合这个模式的文件”。

补充知识:在计算机领域,“Glob” 是一种专门用来匹配文件路径的规则,比如*.txt就是一个 Glob。它和“Global(全局)”虽然长得像,但意思完全不同。


2.--glob=GLOB是什么意思?

这部分是-g完整写法参数说明

  • --glob
    这是-g的长版本。也就是你可以写-g,也可以写--glob,效果完全一样。通常写脚本时为了可读性会用长版本。

  • =GLOB(全大写的部分)
    这是一个占位符 (Placeholder)

    • 它在告诉你:如果你用了这个参数,你必须在等号后面(或者空格后面)填入一个具体的通配符规则

    • 你实际使用时,要把GLOB替换成你想要的规则(比如*.jssrc/**)。


3. 连起来看:-g GLOB, --glob=GLOB

整句话翻译成人话就是:

“你可以使用短参数-g后面跟一个通配符,也可以使用长参数--glob后面跟一个通配符。它们的作用是根据文件名来筛选搜索范围。”


举个栗子你就明白了

假设你只要搜索 Python 文件 (.py) 里的 "import" 关键字。

文档里的写法:
-g GLOB

你实际敲命令时的写法:

代码语言:Bash

AI代码解释

# 使用短参数(GLOB 被替换成了 "*.py") rg -g "*.py" "import" # 或者使用长参数 rg --glob="*.py" "import"

再比如,你要排除 json 文件:

代码语言:Bash

AI代码解释

# GLOB 被替换成了 "!*.json" (!表示排除) rg -g "!*.json" "import"

总结

  • -g=Glob(通配符/文件名匹配模式),不是 Global。

  • GLOB=填空题,让你填入具体的文件名规则(如*.txt)。

这段文档解释了ripgrep(rg) 的-g(或--glob) 参数的用法。

简单来说,这是用来筛选文件的(决定搜哪些文件,或者忽略哪些文件),它的规则和.gitignore类似。

以下是详细解读:

1. 核心功能:包含或排除文件

  • 作用:使用通配符(Glob patterns)来指定要搜索的文件或目录。

  • 优先级最高:不管你在.gitignore里写了什么,或者用了其他忽略规则,命令行里的-g优先级是最高的

    • 如果你在.gitignore忽略了log/目录,但你运行rg -g "log/**",rg 依然会强制搜索它。

  • 排除语法:如果在通配符前加!,表示排除(不搜索)。

    • rg -g "!*.min.js":搜索所有文件,但排除.min.js文件。

2. 优先级规则

If multiple globs match a file or directory, the glob given later in the command line takes precedence.

  • 后发制人:如果你写了多个-g,后面的规则会覆盖前面的。

    • 例如:rg -g "!*.js" -g "main.js"

    • 解释:先说“排除所有 js”,后说“包含 main.js”。结果是:除了main.js以外的其他 js 文件都不搜。

3. 高级语法:花括号扩展

globs support specifying alternatives: ... ab{c,d}...*

  • 支持像 Shell 一样的花括号{}语法来简化写法。

  • 例子-g "ab{c,d}*"等价于写了两次:-g "abc*"-g "abd*"

  • 限制:目前不支持空的选项(比如ab{,c}是不行的)。

4. ⚠️ 最大的坑:目录匹配

文档最后一段特别强调了一个初学者常犯的错误:

For example, if you only want to search in a particular directoryfoo, then-g foois incorrect...

  • 错误写法rg -g "foo" pattern

    • 原因:这只会匹配名字叫foo的文件或目录本身,不会匹配foo目录里面的文件(如foo/bar.txt)。因为foo这个模式不匹配路径foo/bar.txt

  • 正确写法rg -g "foo/**" pattern

    • 解释**表示递归匹配目录下的所有内容。这样foo/bar.txt就能被foo/**匹配到了。

总结示例

  1. 只搜 Python 文件

    代码语言:Bash

    AI代码解释

    rg -g "*.py" "def main"
  2. 搜所有文件,但排除测试文件夹

    代码语言:Bash

    AI代码解释

    rg -g "!tests/**" "error"
  3. 只在srcinclude目录下搜索(注意/**):

    代码语言:Bash

    AI代码解释

    rg -g "{src,include}/**" "pattern"

一句话总结:-g是手动强力过滤器,用来告诉 rg “只看这些”或者“别看那些”,记得搜目录时后面要加/**

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/21 11:23:33

【课程设计/毕业设计】基于springboot的工厂精密设备销售管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/26 1:21:52

AI应用架构师谈企业AI技术栈选型的重要性

AI应用架构师谈企业AI技术栈选型的重要性:从踩坑到落地的全维度思考 引言:那些死在“选型”上的AI项目 三年前,我曾参与过一个传统制造企业的设备故障预测项目:企业投入了500万预算,团队用TensorFlow训练了一个精度达92%的LSTM模型,但上线后却频繁崩溃——原因很简单:…

作者头像 李华