grep이 이상하게 동작합니다

grep이 이상하게 동작합니다

Grep이 내 시스템 중 하나(Ubuntu 데스크탑 - 다른 모든 시스템은 Ubuntu 서버임)에서 이상하게 작동하는데 그 이유를 이해할 수 없습니다. 라는 제어 파일을 만들었습니다.텍스트여기에는 다음 텍스트가 포함되어 있습니다.

grep
test!!

다음 명령은 내 모든 시스템에서 작동합니다(해당 하위 시스템 제외).

$ grep grep *
text:grep
$ grep 'test!!' *
text:test!!

내 경우에는 하위 grep이 중단되었습니다. 나는 비교했다.bashrc,.bash_alias, 또는/etc/bash_completion, 하지만 문제를 찾을 수 없습니다. 문제의 원인이 무엇인지 아시나요?

답변1

해당 머신의 디렉터리에 소켓, 명명된 파이프(fifos) 등과 같은 grep 'something' *특수 파일이 있습니까 ?

적어도 명명된 파이프의 경우 grep은 실제로 명명된 파이프에 EOF를 쓸 때까지 명명된 파이프에서 EOF를 가져오지 않습니다.

답변2

정지되면 표준 입력에서 입력을 찾는 것처럼 들립니다.

Ctrl-D를 한 번만 입력하면 이를 증명할 수 있습니다. 그러면 쉘로 돌아갑니다.

이것이 맞다면 * 파일을 찾을 수 없습니다.

답변3

비슷한 문제가 있었는데, 범인은 "-"라는 이름의 루즈 디렉터리였습니다. 이는 디렉터리 이름이 아닌 "표준 입력에서 읽는 것"으로 해석되었을 가능성이 높습니다.

> grep 'something' * 
> grep 'something' f1 f2 f3 - f4 f5  ...

관련 정보