Neden “grep anahtar kelimesi” terminalin sonsuza dek beklemesine neden oluyor?


25

Terminale "grep doc" yazdığımda hiçbir şey yapmaz, Ctrl+ Cveya kullanarak kaçmadan önce terminalin başka bir şey yapmasını engeller Z.

Grep'i kullanmam gerektiği gibi olmadığını biliyorum, ama bunun neden olduğunu merak ediyorum.

Yanıtlar:


40

grep dosya belirtilmezse, varsayılan olarak standart girdi aranır:

grep, verilen PATTERN ile eşleşen satırlar için adlandırılmış girdi DOSYALARLARINI (veya hiçbir dosya adlandırılmamışsa standart girdi veya tek bir kısa çizgi eksi (-) dosya adı olarak verilirse) arar. Grep varsayılan olarak eşleşen satırları yazdırır.

Eğer grep docgrep yaparsanız, standart girişin gelip içeride arama yapmasını beklersiniz ( terminal arasına <ve arasına parça girmeyin >, bunlar yorumdur):

$ 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, grep "oturumunu" sonlandırmak için bir satırda Ctrl + D tuşlarına basabilir.
Kevin

2
İyi cevap. Sadece hiç kimsenin grep'i bu şekilde yazarak kullanmaya ihtiyaç duymadığını not etmek istedim, ancak standart çıktısını önceki komuttan kullanmanıza izin veriyor, ki bu çok kullanışlı.
Karl Bielefeldt

20
@KarlBielefeldt: Aslında karmaşık regexps hata ayıklamak için uygun bir yoldur. Gibi bir şey çalıştırabilir grep '([a-z]+[0-9]*.x){2,3}'ve klavyenizdeki bir dizi örnek satırı yazabilirsiniz, düşündüğünüzle eşleştiğinden emin olun. Eşleşen çizgiler yankılanacak, olmayacak çizgiler.
Nate Eldredge

1
@NateEldredge: Bunun için pratik bir örnek verdiğiniz için teşekkür ederiz! Grep ve kedi gibi şeylerin null-arg çağrılarına her zaman temelde teorik olarak baktım.
labirent

1
@ labyrinth Teorik değiller, borulama yaparken her zaman kullanılırlar, örneğinsomecommand | grep foo
Barmar

14

grep giriş bekliyor.

Kimden man grep:

[...]
DESCRIPTION
       grep  searches  the named input FILEs (or standard input if no files are named
[...]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.