我正在为 git 开发“自定义 grep”包装器。它显示文件匹配模式的第一行。此行应为文件的标题。
我创建了别名,一切正常,直到我尝试搜索模式,但在工作文件夹中找不到。由于没有找到文件,head
并且sed
命令没有任何可使用的命令并等待输入。
如何防止这种情况?如果没有输入,我希望脚本中断。当然我可以创建单独的脚本,将文件列表分配给变量并检查该变量的长度。但我更喜欢甜美整洁的 oneliner-alias。
是否可以?这是我的.gitconfig
别名部分:
[alias]
gg = !sh -c 'head -n1 -q `git grep --name-only $0` | sed s/OBJECT.//'
解析度
以下别名命令在 Windows 7 x64、msysGit 1.7.11.1 上为我工作:
gg = !sh -c 'head -n1 -q `git grep --name-only $0` < /dev/null | sed s/OBJECT.//'
和
gg = !sh -c 'git grep --name-only $0 | xargs -l sed -n "1{s/OBJECT.//p}"'
但表现不同。第一种方法明显更快。