비밀번호 내용을 나열하고 점으로 시작하는 파일만 표시하고 싶습니다. 시도했지만 ls -a | grep ^\.
왜 출력에 점으로 시작하지 않는 파일도 포함되어 있는지 알 수 없습니다. 예를 들어:
Pictures
.pip
.pki
.profile
projects
Public
나는 내가 원하는 것을 달성할 수 있다는 것을 알고 있지만, ls -ld .*
설명할 수 없는 grep의 동작이 궁금할 뿐입니다.
답변1
매개변수를 따옴표 grep
로 묶어서ls -a | grep '^\.'
그 이유는 쉘이 \.
이를 처리하여 다시 일반으로 변환 .
한 grep
다음 단일 문자 와일드카드로 처리하기 때문입니다. 의심스러울 경우 항상 쉘 특정 문자를 포함하는(또는 포함할 수 있는) 문자열을 인용하십시오.
답변2
답변3
cmd를 실행하면ls -a | grep ^\.그러면 grep은 "\"를 특수 문자로 처리하지 않으며 "."의 의미가 이스케이프되지 않습니다.
cmd를 사용할 때ls -a | grep "^\."그런 다음 grep은 "\"를 특수 문자로 처리하고 "."의 의미를 이스케이프합니다. 그것은 당신에게 예상되는 결과를 줄 것입니다.
따옴표 없이 grep cmd를 사용하려면 "\" 문자도 이스케이프해야 합니다. 다음 명령을 사용하면 큰따옴표 없이 예상된 결과를 얻을 수 있습니다. ls -a | grep ^\\.
정규식에서 특수 문자의 의미에 대한 자세한 내용은 다음 링크를 참조하세요. http://www.regular-expressions.info/quickstart.html