저는 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
그러면 파일의 줄이 인쇄됩니다.