“grep 키워드”가 터미널을 영원히 대기시키는 이유는 무엇입니까?


25

내가 터미널에서 "그렙 문서"를 입력하면, 그냥 내가 사용 탈출하기 전에 다른 아무것도에서 터미널을 중지, 아무것도하지 Ctrl+ C또는 Z.

나는 이것이 grep을 사용해야하는 방법이 아니라 왜 이것이 일어나는지 궁금합니다.

답변:


40

grep 파일이 제공되지 않으면 기본적으로 표준 입력을 검색합니다.

grep은 지정된 PATTERN과 일치하는 행이 있는지 명명 된 입력 FILE (또는 파일이 명명되지 않은 경우 또는 단일 하이픈-마이너스 (-)가 파일 이름으로 제공되는 경우)을 검색합니다. 기본적으로 grep은 일치하는 줄을 인쇄합니다.

당신은 그냥 할 경우 grep doc와서는 내부 검색 그렙이 기대를 표준 입력 (사이 부분을 입력하지 <>터미널로, 이러한 의견입니다) :

$ 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는 또한 줄에서 Ctrl + D를 눌러 grep "세션"을 종료 할 수도 있습니다.
Kevin

2
좋은 대답입니다. 아무도 그런 식으로 입력하여 grep을 사용할 필요가 없다는 것을 알고 싶었지만 이전 명령에서 표준 출력을 파이프 할 수 있으므로 매우 유용합니다.
Karl Bielefeldt

20
@ KarlBielefeldt : 실제로 복잡한 정규 표현식을 디버깅하는 편리한 방법입니다. grep '([a-z]+[0-9]*.x){2,3}'키보드에서 무언가를 실행하고 샘플 라인을 입력하여 생각하는 것과 일치하는지 확인할 수 있습니다. 일치하는 줄은 에코되고 그렇지 않은 줄은 에코됩니다.
Nate Eldredge

1
@NateEldredge : 이에 대한 실제 사례를 제공해 주셔서 감사합니다! 나는 항상 grep과 cat 같은 것들에 대한 null-arg 호출을 주로 이론적 인 것으로 보았습니다.
미로

1
@labyrinth 그들은 이론적이지 않으며 배관 할 때 항상 사용됩니다.somecommand | grep foo
Barmar

14

grep 입력 대기 중입니다.

보낸 사람 man grep:

[...]
DESCRIPTION
       grep  searches  the named input FILEs (or standard input if no files are named
[...]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.