Perché la "parola chiave grep" sta facendo rimanere il terminale per sempre?


25

Quando digito "grep doc" nel terminale, semplicemente non fa nulla, impedendo al terminale di fare qualsiasi altra cosa prima che io scappi usando Ctrl+ Co Z.

So che non è così che dovrei usare grep, ma sono solo curioso di sapere perché questo sta accadendo.

Risposte:


40

grep per impostazione predefinita cerca l'input standard se non viene fornito alcun file:

grep cerca nei FILE di input nominati (o input standard se non è stato nominato alcun file o se viene dato un singolo trattino-meno (-) come nome del file) per le righe che contengono una corrispondenza con il PATTERN dato. Per impostazione predefinita, grep stampa le linee corrispondenti.

Se fai semplicemente grep docgrep, si aspetta che l'input standard arrivi e cerchi al suo interno (non inserire parti tra <e >nel terminale, questi sono commenti):

$ 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
OP può anche premere Ctrl + D su una riga da solo per terminare la "sessione" grep.
Kevin,

2
Buona risposta. Volevo solo notare che praticamente nessuno ha mai bisogno di usare grep digitando in questo modo, ma ti permette di reindirizzare l'output standard da un comando precedente, che è molto utile.
Karl Bielefeldt,

20
@KarlBielefeldt: in realtà è un modo conveniente per eseguire il debug di regexps complicati. Puoi eseguire qualcosa di simile grep '([a-z]+[0-9]*.x){2,3}'e digitare un mucchio di linee di esempio sulla tastiera per assicurarti che corrisponda a ciò che pensi che faccia. Le linee che corrispondono verranno ripetute, le linee che non lo faranno.
Nate Eldredge,

1
@NateEldredge: grazie per averci fornito un esempio pratico per questo! Ho sempre considerato le invocazioni null-arg di cose come grep e cat come principalmente teoriche.
labirinto

1
@labyrinth Non sono affatto teorici, vengono usati sempre durante le tubazioni, ad es.somecommand | grep foo
Barmar

14

grep è in attesa di input.

Da man grep:

[...]
DESCRIPTION
       grep  searches  the named input FILEs (or standard input if no files are named
[...]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.