“ls -a | grep ^ \.” 나열하고 dot로

나는 pwd의 내용을 나열하고 dot로 시작하는 파일 만 표시하고 싶었습니다. 시도 ls -a | grep ^\.했지만 출력에 점으로 시작하지 않는 파일도 왜 포함되어 있는지 알 수 없습니다. 예를 들면 다음과 같습니다.

Pictures
.pip
.pki
.profile
projects
Public

나는 내가 원하는 것을 달성 할 수 있다는 것을 알고있다. 나는 ls -ld .*설명 할 수없는이 grep의 행동에 대해 궁금하다.



답변

인수를하는 견적 grep따라서,ls -a | grep '^\.'

그 이유는 쉘 핸들이다 \.교대가 일반에 백업 ., 이는 grep다음 단일 문자 와일드 카드로 취급합니다. 의심스러운 경우, 항상 쉘에 특수한 문자를 포함하거나 포함 할 수있는 문자열을 인용하십시오.


답변

grep 정규식을 따옴표 안에 넣어야합니다.

ls -a | grep '^\.'

참고 : command 출력을 구문 분석하지 마십시오ls .


답변

cmd ls -a | grep ^ \. grep은 “\”를 “.”의 특수 문자 및 의미로 간주하지 않습니다. 탈출하지 마십시오.

cmd ls -a | grep “^ \.” grep은 “\”를 “.”의 특수 문자 및 의미로 간주합니다. 탈출. 예상대로 결과를 제공합니다.

따옴표없이 grep cmd를 사용하려면 “\”문자도 이스케이프해야합니다. 다음 명령으로 큰 따옴표없이 결과를 기대할 수 있습니다.
LS -a | grep ^ \\.

Regex에서 특수 문자의 의미에 대한 자세한 내용은 다음 링크를 참조하십시오.
http://www.regular-expressions.info/quickstart.html


답변