2015-05-07 42 views
0

我试图运行此命令(在Mac)...Git Grep =>为什么`git grep -h`不能用于Unix管道?

$ git grep -h | grep dir 

而是打印包含dir的线条,它打印的所有文字git grep -h,并且有效地忽略| grep dir

我也试过这个...

$ git grep -h > foo.txt 

...它打印它打印git grep -h所有文本,并创建一个空的文本文件。

这是怎么回事?

+1

您正在运行命令的不完整,所以'混帐grep'正在写它的帮助信息到标准错误,而不是编写实际输出到标准输出。 – chepner

+0

没有管道的'git grep -h'和管道一样。 –

回答

1

git grep需要一个模式来搜索。由于您没有提供,因此它会在stderr上显示帮助(当您管道或重定向stdout时)。

你需要运行,以实现自己的目标的命令是:

$ git grep -h dir 
+0

谢谢。我无法使'git grep -h dir'工作,但你对stderr是正确的。我搜索stderr的答案,发现[这个问题](http://stackoverflow.com/questions/2342826/how-to-pipe-stderr-and-not-stdout),并解决了问题'git grep -h 2 >&1>/dev/null | grep'dir''。 – amorphid

1

我相信你需要把你的正则表达式的命令后,像这样:git grep -h dir

然后,你可以把它管道输出文件或做任何与该数据。