我试图运行此命令(在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
所有文本,并创建一个空的文本文件。
这是怎么回事?
我试图运行此命令(在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
所有文本,并创建一个空的文本文件。
这是怎么回事?
git grep
需要一个模式来搜索。由于您没有提供,因此它会在stderr
上显示帮助(当您管道或重定向stdout
时)。
你需要运行,以实现自己的目标的命令是:
$ git grep -h dir
谢谢。我无法使'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
我相信你需要把你的正则表达式的命令后,像这样:git grep -h dir
然后,你可以把它管道输出文件或做任何与该数据。
您正在运行命令的不完整,所以'混帐grep'正在写它的帮助信息到标准错误,而不是编写实际输出到标准输出。 – chepner
没有管道的'git grep -h'和管道一样。 –