이름이 뭐에요
*.*
상징과 그 의미는 무엇입니까?
답변1
*.*
오래된 Windows/DOS 시스템에서의 해석
여기서 의미는 Unix/Linux보다는 Windows/DOS와 더 관련이 있습니다. 이전 Windows/DOS 시스템에서는 "와일드카드" 모드입니다. 와일드카드 패턴은 Unix glob과 유사한 방식으로 파일 이름을 일치시키는 데 사용됩니다. 와일드카드는 *.*
파일을 일치시키는 데 자주 사용됩니다.
Unix glob과 마찬가지로 *
파일 이름의 모든 문자 시퀀스와 일치하므로 *
자체적으로 모든 파일과 일치합니다. 그러나 *.*
이러한 와일드카드 문자 작동 방식의 차이로 인해 모든 파일 이름이 일치됩니다. ~에 따르면이 기사:
별표를 제외하고 별표 뒤의 모든 문자는 효과가 없습니다. 별표는 커서를 위치 12로 이동하기 때문입니다. 이 시점에서는 마지막 세 위치를 지우고 커서를 이동하는 점을 제외하고는 구문 분석 상태가 아무것도 변경되지 않습니다.
이 동작(Unix 관점에서 보면 약간 이상함)은 a 뒤의 점이 *
실제로 점과 일치하지 않는다는 것을 의미하지만 패턴에 더 많은 문자를 추가할 수 있는 해킹일 뿐입니다. 이는 다른 항목을 추가하면 *
마지막 세 위치의 모든 항목과 일치함을 의미합니다.
이 구문이 Windows 95 이전 DOS와 이전 Windows 시스템에서 사용되었다는 점을 고려하면 이는 더 의미가 있습니다.8.3 파일 이름. 이러한 파일 이름에는 점 1개만 사용할 수 있으며 점 뒤 문자는 최대 3자까지 가능합니다. 시스템의 모든 파일은 아니더라도 대부분의 파일 확장자는 3자입니다(기술적으로 더 짧은 확장자가 허용되거나 확장자가 허용되지 않더라도). 그래서 어떻게든 *.*
모든 파일을 일치시키는 것이 의미가 있다고 생각했습니다(적어도 뒤틀린 Windowsey 논리 관점에서는). .
*.*
Unix 쉘에서의 설명
Unix 쉘에서는 다른 사람들이 지적했듯이 이는 "경로 이름 확장" 또는 "glob"을 나타냅니다. *
이상한 점프-엔드 동작이 없으므로 뒤따르는 문자가 무시되지 않습니다. *.*
패턴은 점이 포함된 모든 파일 이름과 일치합니다(시작 부분 제외). Unix/Linux 시스템에는 많은 파일이 있으므로 이는 어떤 파일과도 일치하지 않습니다.아니요확장자가 있어야 합니다(또는 점이 허용되므로 점을 포함해야 합니다).
유닉스에서 파일 이름 시작 부분의 점이 일치하지 않는 이유 *.*
는 파일 이름 시작 부분에 점을 추가하면 파일이 "숨겨지는" 방식이고 숨겨진 파일은 기본적으로 전역에서 제외되기 때문입니다. POSIX 셸에서 이를 일치시키려면 패턴 시작 부분에 명시적으로 점을 배치해야 합니다. 옵션은 셸에서 설정하거나 변수를 적절하게 설정할 bash
수 있지만 이는 또 다른 질문입니다!dotglob
GLOBIGNORE
답변2
그것은glob
존재하다 bash
. 아래에서는 bash 매뉴얼을 인용합니다.
bash - GNU Bourne-Again 쉘
*
빈 문자열을 포함하여 모든 문자열과 일치합니다.
globstar
쉘 옵션이 활성화되어*
경로 이름 확장의 맥락에서 사용 되면*s
단일 패턴으로 사용되는 두 개의 인접한 옵션은 모든 파일과 0개 이상의 디렉터리 및 하위 디렉터리와 일치합니다. 따라가면/
인접한 두 개의 항목은*s
디렉터리 및 하위 디렉터리와만 일치합니다.
이 경우 *.*
이름에 점이 포함된 모든 파일이 일치됩니다..
자세한 내용을 보실 수 있습니다여기.
답변3
답변4
*
실행을 위해 쉘에서 사용되는 와일드카드입니다.파일 이름 확장자, "와일드카드"라고도 합니다. *
아무것도 포함하지 않고 모든 것으로 확장됩니다(예: *.*
일치함 file.
등). 또 다른 일반적인 와일드카드 ?
는 단일 문자와 일치한다는 것입니다.
이러한 와일드카드 문자의 기능을 정규식(예: grep에서 사용되는 문자)의 동일한 문자 사용과 혼동해서는 안 됩니다.