Por que a palavra-chave “grep” está fazendo com que o terminal fique para sempre?

25

Quando digito "grep doc" no terminal, ele simplesmente não faz nada, impedindo o terminal de fazer qualquer outra coisa antes que eu escape usando Ctrl+ Cou Z.

Eu sei que não é assim que devo usar o grep, mas apenas curioso por que isso está acontecendo.

Março3Abril4
fonte

Respostas:

40

grep por padrão, pesquisa a entrada padrão se nenhum arquivo for fornecido:

O grep pesquisa os FILEs de entrada nomeados (ou entrada padrão se nenhum arquivo for nomeado ou se um único hífen-menos (-) for fornecido como nome do arquivo) por linhas que contenham uma correspondência com o PATTERN fornecido. Por padrão, grep imprime as linhas correspondentes.

Se você apenas grep docgrep espera que a entrada padrão venha e procure dentro dela (não insira partes entre <e >no terminal, estes são comentários):

$ 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>
Arkadiusz Drabczyk
fonte
6
O OP também pode pressionar Ctrl + D em uma linha por si só para finalizar a "sessão" do grep.
26715 Kevin
2
Boa resposta. Só queria observar que praticamente ninguém precisa usar grep digitando assim, mas permite canalizar a saída padrão de um comando anterior, o que é muito útil.
Karl Bielefeldt
20
@KarlBielefeldt: Na verdade, é uma maneira conveniente de depurar regexps complicados. Você pode executar algo como grep '([a-z]+[0-9]*.x){2,3}'e digitar várias linhas de amostra no teclado para garantir que ele corresponda ao que você pensa que faz. As linhas correspondentes serão ecoadas, as linhas que não corresponderão.
Nate Eldredge 27/03
1
@NateEldredge: Obrigado por dar um exemplo prático para isso! Eu sempre olhei para invocações de argumentos nulos de coisas como grep e cat como sendo principalmente teóricas.
labyrinth
1
@labyrinth Eles não são teórica em tudo, eles são usados o tempo todo quando tubulação, por exemplosomecommand | grep foo
Barmar
14

grep está aguardando entrada.

De man grep:

[...]
DESCRIPTION
       grep  searches  the named input FILEs (or standard input if no files are named
[...]
AB
fonte