echo * 및 echo .*의 결과

echo * 및 echo .*의 결과

이론적으로 명령의 결과는 echo *"현재 디렉터리의 모든 파일"이어야 합니다. 도트 파일을 포함해야 합니까?

마찬가지로 결과에 ls *도트 파일이 포함되어야 합니까?

답변1

~에서파일 이름 확장자GNU bash 참조 섹션:

파일 이름 확장에 패턴이 사용되는 경우 쉘 옵션 dotglob이 설정되지 않은 한 파일 이름 시작 부분이나 슬래시 바로 뒤의 "." 문자가 명시적으로 일치해야 합니다. 파일 이름을 일치시킬 때 슬래시 문자는 항상 명시적으로 일치해야 합니다. 다른 경우에는 "." 문자가 특별한 처리를 받지 않습니다.

이는 모든 POSIX 셸의 문서화된(예상된) 동작입니다.파일 이름 확장에 사용되는 패턴:

파일 이름이 마침표( '.' )로 시작하는 경우 마침표를 패턴의 첫 번째 문자로 사용하거나 슬래시 문자 바로 다음에 사용하여 마침표를 명시적으로 일치시켜야 합니다. 선행 기간은 다음과 일치하지 않아야 합니다.

  • 별표 또는 물음표 특수 문자

  • 대괄호 표현식(예: "[!a]"), 범위 표현식(예: "[%-0]") 또는 문자 클래스 표현식(예: "[[:punct:]]") 일치하지 않는 목록

대괄호 표현식 일치 목록(예: "[.abc]")의 명시적 마침표가 파일 이름의 선행 마침표와 일치할 수 있는지 여부는 지정되지 않습니다.

관련 정보