You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让git grep读取标准输入(stdin)?

用git grep处理标准输入并使用--function-context的方法

你可以通过临时文件/进程替换的方式绕开git grep不直接支持stdin的限制,同时保留--function-context功能,具体方法如下:

方法1:进程替换(简洁写法)

利用shell的进程替换特性,把stdin转换成git grep能识别的“虚拟文件”,直接指定给--no-index模式:

git grep --no-index --function-context "你要搜索的模式" <(cat -)

这里<(cat -)会把标准输入的内容包装成一个临时管道文件,git grep会将其当作普通未被Git管理的文件处理,完美适配--function-context选项。

方法2:临时文件(脚本场景更安全)

如果是在自动化脚本中使用,推荐用mktemp创建安全的临时文件,避免冲突:

# 创建临时文件
temp_file=$(mktemp)
# 将标准输入写入临时文件
cat - > "$temp_file"
# 用git grep搜索并带上函数上下文
git grep --no-index --function-context "你要搜索的模式" "$temp_file"
# 用完删除临时文件
rm "$temp_file"

补充说明:--no-index并非只能搜索当前目录的文件,官方文档描述的是默认行为(不指定文件时搜当前目录未被管理的文件),但你可以直接指定任意未被Git追踪的文件路径,包括临时文件或进程替换生成的虚拟文件。

内容的提问来源于stack exchange,提问作者ks1322

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:57:34