grep .*는 .bash_history의 결과를 반환하고 불평합니다.

grep .*는 .bash_history의 결과를 반환하고 불평합니다.

저는 Linux를 처음 접했고 지금까지 일부 유틸리티, 특히 grep 유틸리티를 사용해 왔습니다. 나는 다음 내용을 포함하는 새 파일("newfile"이라고 함)을 만들기로 결정했습니다.

Lady of the night,
I hold you close to me,
And everything is out of sight,
I think I'll be alright.

"grep .* newfile"을 입력하여 grep을 통해 실행하려고 하면 파일의 행만 표시될 것으로 예상되지만, 그 중 첫 번째 결과는 다음과 같습니다.

grep: ..: Is a directory

다음은 전체 .bash_history(이 기사를 짧게 유지하기 위해 생략하겠습니다)와 newfile의 내용입니다. 왜 그럴까요? 이 문제를 해결할 방법이 있나요? 정규식을 변경해야 하나요?

답변1

실험을 해보세요! 달리기

echo grep .* newfile

결과를 통해 어떤 결론을 내릴 수 있나요? grep의 첫 번째 인수를 인용(작은따옴표 또는 큰따옴표로 묶음)하면 결과가 어떻게 변경됩니까?

이 내용을 직접 알고 싶다면 읽어보세요.경로 이름 확장에 대한 POSIX 사양. 다양한 확장에 대한 모든 것을 알면 곧 쉘 마스터가 될 것입니다 :-)

답변2

쉘은 정규식으로 전달하는 *대신 사용자의 것을 해석합니다. grep정규식 검색을 사용하려면 grep"이것은 정규식입니다"라는 옵션을 전달해야 합니다. 제 설치에서는 -e.try 였습니다 grep -e '.*' newfile.

답변3

별표(.*)와 파일 이름(newfile) 앞에 점을 지정하면 grep에게 newfile 파일에서 패턴을 찾도록 지시 .\*하고 쉘은 .\*디렉터리에 점 파일을 포함하도록 확장됩니다.

아마도 다음과 같은 것을 원할 것입니다.

cat newfile

그러면 파일의 줄이 인쇄됩니다.

관련 정보