【发布时间】:2019-09-27 13:40:58
【问题描述】:
我昨天在 linux 终端中使用 grep 来查找使用 'grep' 函数的 Perl 代码实例。我忘了在“grep”这个词周围加上引号,并注意到一些半有趣的东西。例如:
git grep grep
...而不是:
git grep 'grep'
... 会导致终端挂起。为了满足我自己的好奇心,我试图确切地研究执行此命令时幕后发生的事情,但没有运气。
有人可以向我解释一下为什么这个命令会导致终端挂起,但 git grep 本身不会,而是会为“没有给出模式”抛出一个致命错误?
【问题讨论】:
-
无法重现
git grep grep与git grep 'grep'行为不同的任何情况。此外,在问题中,您引入了第三个命令 (git grep),它的行为当然不同,因为您没有告诉它要查找什么 -
你用什么外壳?大多数 shell 删除了引号,所以
git grep得到的参数是一样的。 -
ps -p $$命令给出以下输出:PID TTY TIME CMD 30386 pts/1 00:00:00 bash