
文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载ack是一款面向源码搜索的命令行工具允许我们按文件类型过滤被搜索的文件把检索范围精准地收窄到某几类扩展名上。本文围绕本仓库 ack 分类 中的--help-types技巧讲解如何用一条命令列出 ack 内置以及你在.ackrc中自定义的全部文件类型并深入解读输出格式、包含/排除用法与自定义类型的联动方式。读完本文你将能快速盘点当前环境里 ack 认识哪些文件类型并据此写出更精准的搜索命令。ack 的文件类型过滤解决什么问题默认情况下ack会在目录树中遍历并搜索文件但并不是所有文件都值得被检索——二进制文件、构建产物、.git目录等内容不仅拖慢速度还会污染结果。为此 ack 提供了按文件类型过滤的能力你可以让搜索只针对某类源码文件如 JS、CSS、Go或显式排除某些类型。正如 list-available-file-types.md 所述Theackutility allows you to filter the searched files based on file type.这是理解--help-types的前提它服务于“按类型过滤”这一核心功能。只有先知道 ack 认识哪些类型、每个类型对应哪些扩展名你才能正确地写出--type/--no类过滤参数。一行命令ack --help-types列出全部文件类型如果你想知道 ack 当前支持的所有文件类型直接用--help-types即可$ ack --help-types该命令会打印一份完整的“类型 → 扩展名”对照清单。关键细节在于这份清单不只包含 ack 内置类型还包括你在.ackrc配置文件中自定义的类型——也就是说你看到的是一份“当前环境实际生效”的类型总表而不是静态的硬编码列表。下面是该命令输出的一个片段示例省略号...表示中间还有大量未展示的类型$ ack --help-types ... --[no]css .css .less .scss --[no]dart .dart --[no]delphi .pas .int .dfm .nfm .dof .dpk .dproj .groupproj .bdsgroup .bdsproj --[no]elisp .el --[no]elixir .ex .exs --[no]erlang .erl .hrl --[no]fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp --[no]go .go --[no]groovy .groovy .gtmpl .gpp .grunit .gradle --[no]haskell .hs .lhs --[no]hh .h --[no]html .html .mustache .handlebars .tmpl --[no]jade .jade --[no]java .java .properties --[no]js .js ...从这段输出可以直观看到 ack 覆盖面很广既包括 CSS、Go、Java、JavaScript 等主流语言也包含 Elixir、Erlang、Haskell、Fortran、Dart、Delphi、Groovy 等相对小众的语言。想要完整清单直接在终端执行命令即可也可以配合grep快速定位某类例如$ ack --help-types | grep go --[no]go .go解读输出格式--[no]类型名 扩展名列表--help-types的每一行输出都可以拆成两个部分开关位形如--[no]css其中的[no]表示这一类型同时对应一正一反两个选项——--css表示“只搜索 CSS 类文件”--nocss表示“排除 CSS 类文件”。这是一份“可选项声明”告诉你该类型可以通过--类型名包含、通过--no类型名排除。扩展名列表开关位后面是本类型覆盖的全部扩展名。例如--[no]css后面的.css .less .scss意味着“CSS 类型”由三个扩展名共同构成--[no]java除了.java还包含.properties说明 ack 把属性文件也归入了 Java 类型名下。由此可以得到两个实用结论一个类型可以对应多个扩展名--css一条命令即可覆盖.css、.less、.scss三种文件无需分别指定。类型名通常为小写单词如elisp、fortran、haskell中间没有分隔符如果你不确定某个类型名怎么写--help-types输出就是最权威的拼写参考。把类型过滤用起来包含与排除理解输出格式后就可以在实际搜索中使用了。核心用法是ack --类型名 关键词只搜该类型与ack --no类型名 关键词排除该类型。例如只想在 CSS/SCSS/LESS 文件中搜索color$ ack --css color如果搜索main时希望跳过 Fortran 源码$ ack --nofortran main类型过滤还可以与其他 ack 参数自由组合。本仓库 case-insensitive-search.md 介绍了大小写不敏感搜索$ ack -i easter把两者结合起来就可以“只在 HTML 类文件中、忽略大小写地搜索某个词”$ ack -i --html easter这样既利用了-i的大小写宽容又借助--html把范围限定在.html、.mustache、.handlebars、.tmpl文件内搜索意图一目了然。自定义类型.ackrc与--help-types的联动--help-types最有价值的一点是它会动态合并你在.ackrc中自定义的类型。.ackrc是 ack 的配置文件通常位于主目录作为全局配置也可放在项目目录中按项目生效其中的命令行选项会被 ack 启动时自动读取。如果你项目的文件扩展名不在 ack 内置清单里可以通过 ack 提供的自定义类型选项把它挂载到某个类型名下例如把conf、cfg归为一类$ ack --type-addconf:ext:conf,cfg把这类配置行写进.ackrc之后再次运行ack --help-types输出中就会出现相应的新行。这正是原文档强调的重点——--help-types的清单“will include file types youve specified in your.ackrcfile”。因此它既是内置类型速查表也是自定义类型的效果验收工具改完.ackrc后跑一次--help-types即可确认新类型及其扩展名映射是否正确注册。提示--type-add等自定义选项的完整语法、是否支持ext/is等不同过滤方式请以本机ack --help与man ack的输出为准。在本仓库中的实践与关联技巧本仓库的 README.md 在Ack分类下收录了三篇 ack 相关 TIL--help-types是其中关于“文件类型”的一篇另外两篇可以作为配套技巧一起阅读case-insensitive-search.md-i大小写不敏感搜索并提及--smart-case选项——配合类型过滤可以写出兼顾“类型精准”与“大小写宽容”的搜索命令。ack-bar.mdack --bar彩蛋命令可以在排查问题时活跃气氛。值得说明的是本仓库本身就是一个由上千篇 Markdown 文档构成的 TIL 集合绝大多数文件扩展名都是.md。当你想在这个仓库里快速检索某个知识点时可以先ack --help-types | grep md确认 ack 是否认识 Markdown 类型再决定是否用类型参数收窄范围——这正是--help-types在实际工作流中的典型用法。小结ack --help-types是 ack 文件类型过滤体系中一个简单却高频的命令一条命令即可输出当前环境下所有可用文件类型及其扩展名映射输出格式--[no]类型名直接对应包含--type/排除--no类型两种过滤用法清单会自动并入.ackrc中自定义的类型因此它既是内置类型速查表也是自定义配置的验收工具。关于类型过滤与自定义选项的更多细节如原文档所述man ack提供了最权威的说明按需查阅即可。赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐TIL 仓库笔记ack 命令行工具的隐藏彩蛋 --bar 选项TIL 仓库笔记ack 命令行工具的隐藏彩蛋 bar 选项 本篇技术笔记围绕本仓库 ack 分类 https://link.gitcode.com/i/2a6文档教程知识库DevToysMac文件格式支持清单全面了解支持的输入输出类型DevToysMac文件格式支持清单全面了解支持的输入输出类型 DevToysMac是一款专为macOS用户设计的开发工具集提供了丰富的文件格式转换和处理功开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考