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.

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>

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
[...]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.