2015-05-07 43 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

然後,你可以把它管道輸出文件或做任何與該數據。