news 2026/4/18 6:04:35

-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/4/16 19:59:13

Unix/Linux 系统及其 Shell 环境在 50 年前就定下的“祖宗之法”

rg -g "*.py" "import" 其中 为什么py 跟import之间不加, 这个规则是哪里定义的? 这是一个非常深刻的问题,触及到了计算机操作系统的底层逻辑。 直接回答你:这个规则是由你的“Shell(命令行解释器)”定义的,而不是 ripgrep 这个软件定义的。 所谓…

作者头像 李华
网站建设 2026/4/16 15:45:01

国际行情波动期的跨境运营:把“团队执行力”做成护城河

很多跨境团队在行情好的时候,靠一两条爆款、一两次投放拉升就能跑起来;但行情一波动,问题会集中暴露:信息不同步、执行不一致、决策靠感觉、出了问题临时救火。结果就是——同样的市场,同样的平台,有人越做…

作者头像 李华
网站建设 2026/4/15 19:04:51

电脑“清灰”劝退指南:你以为的保养,可能是对主板的“酷刑”

一个手残党的血泪控诉,看完能省下一台新电脑钱序章:当电脑开始“吟唱”不知从何时起,你的电脑学会了“咏叹调”——一开游戏或剪视频,机箱风扇就发出像要起飞穿越大气层般的尖锐嘶吼。桌面忽然卡成PPT,摸一下机箱侧板&…

作者头像 李华
网站建设 2026/4/10 19:17:41

计算机毕业设计springboot宠物托运服务系统 SpringBoot萌宠出行预约管理系统 SpringBoot爱宠远程护送信息平台

计算机毕业设计springboot宠物托运服务系统xk080ilj (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着国内宠物经济规模突破千亿级市场,养宠家庭渗透率持续攀升&a…

作者头像 李华
网站建设 2026/4/18 4:00:02

基于VUE+Tailwind CSS的高德地图导航功能开发实战教程

本教程适合有HTML、CSS、JavaScript及Vue框架基础的开发者,借助高德地图开放平台API,结合Vue框架和Tailwind CSS实现高德地图的核心搜索功能,包含地图初始化与定位、搜索框与输入提示、POI搜索与结果展示、点标记与文本添加、地图中心点移动等…

作者头像 李华
网站建设 2026/4/12 19:24:25

HTML 生成网页工具推荐:从手写代码到 AI 自动生成的进化

在很长一段时间里,做网页几乎等同于写代码。哪怕只是一个简单的展示页,也要先搭环境、写 HTML 结构、补 CSS 样式、再调试兼容问题。 但这两年,HTML 生成网页工具推荐 这个关键词被越来越多人搜索,本质原因很简单——网站开发的门…

作者头像 李华