为什么“grep 关键字”会导致终端永远待机?

Mar*_*il4 26 grep

当我在终端中输入“grep doc”时,它什么也不做,在我使用Ctrl+C或退出之前阻止终端做任何其他事情Z

我知道这不是我应该如何使用 grep,但只是好奇为什么会发生这种情况。

Ark*_*zyk 41

grep 如果没有给出文件,默认搜索标准输入:

grep 搜索命名输入文件(或标准输入,如果没有命名文件,或者如果给定单个连字符减号 (-) 作为文件名)中包含与给定 PATTERN 匹配的行。默认情况下,grep 打印匹配的行。

如果你只是做grep docgrep 期望标准输入进来并在其中搜索(不要在终端之间<>终端中输入部分,这些是注释):

$ grep doc
a b c <PRESS ENTER HERE>
doc <NO MATCH WAS FOUND IN PREVIOUS LINE, TYPE doc AND PRESS ENTER AGAIN>
doc <MATCH WAS FOUND>
Run Code Online (Sandbox Code Playgroud)

  • @KarlBielefeldt:这实际上是一种调试复杂正则表达式的便捷方法。您可以运行类似 `grep '([az]+[0-9]*.x){2,3}'` 的命令,然后在键盘上输入一堆示例行以确保它符合您的想法。匹配的行将被回显,不匹配的行不会。 (20认同)
  • OP 也可以单独在一行上按 Ctrl+D 来结束 grep“会话”。 (8认同)
  • 好答案。只是想指出,几乎没有人需要通过这样键入来使用 grep,但它允许您从前一个命令通过管道传输标准输出,这***非常有用。 (2认同)

A.B*_*.B. 15

grep 正在等待输入。

来自man grep

[...]
DESCRIPTION
       grep  searches  the named input FILEs (or standard input if no files are named
[...]
Run Code Online (Sandbox Code Playgroud)