*. * 기호는 무엇입니까?


답변:


20

*.*오래된 Windows / DOS 시스템에서 해석

여기서의 중요성은 Unix / Linux보다 Windows / DOS와 더 관련이 있습니다. 오래된 Windows / DOS 시스템에서는 '와일드 카드'패턴이었습니다. 와일드 카드 패턴은 Unix globs와 비슷한 방식으로 파일 이름을 일치시키는 데 사용되었습니다. *.*와일드 카드는 일반적으로 모든 파일을 일치시키는 데 사용되었다.

Unix glob와 마찬가지로 *파일 이름의 모든 문자 *와 일치합니다. 파일 자체 와 도 일치합니다. 그러나 *.*파일 이름과 일치하는 이유 는 이러한 와일드 카드의 작동 방식이 다르기 때문입니다. 이 기사 에 따르면 :

별표 뒤에 오는 점 이외의 문자는 효과가 없습니다. 별표가 커서를 위치 12로 이동하면 점을 제외하고 구문 분석 상태가 바뀌지 않으므로 마지막 세 위치가 지워지고 커서가 이동합니다.

이 동작 (유닉스 관점과는 다소 다른 점)은 a 다음의 점이 *실제로 점과 일치하지 않지만 패턴에 더 많은 문자를 추가 할 수있는 해킹 방법 일뿐입니다. 이것은 다른 것을 추가하면 *이 마지막 세 위치의 모든 항목과 일치 한다는 것을 의미합니다 .

이 구문은 8.3 파일 이름 이 필요한 Windows 95 이전의 DOS 및 이전 Windows 시스템에서 구문이 사용되었다는 것을 고려할 때 좀 더 의미가 있습니다 . 이 파일 이름에는 점 뒤에 하나의 점과 최대 3 개의 문자 만 사용할 수있었습니다. 대부분의 경우 시스템의 모든 파일이 세 자로 된 확장명을 가지지 않는다면 (기술적으로 짧거나 확장명이 허용되지 않더라도) 어떤 식 으로든 *.*파일을 일치시키는 데 사용 하는 것이 합리적이라고 생각 합니다 (적어도 뒤틀린 Windowsey 논리 관점에서) ).

*.*유닉스 쉘에서의 해석

유닉스 쉘에서 다른 사람들이 지적했듯이 이것은 '경로 확장'또는 '글로브'를 나타냅니다. 은 *이 무시되고 다음 문자로 이어질하지 않습니다 따라서 최종 행동에 어떤 이상한 점프를 가지고 있지 않습니다. *.*패턴은 점을 포함하는 모든 파일 이름과 일치합니다 (시작 부분 제외). 유닉스 / 리눅스 시스템 에는 확장자 가없는 파일이 많기 때문에 (혹은 이것이 허용되기 때문에 점이 포함되어 있기 때문에) 어떤 파일과도 일치 하지 않을 것입니다.

*.*Unix에서 파일 이름이 시작될 때 점이 일치하지 않는 이유 는 시작 부분에 점을 두는 것이 파일이 '숨겨지고'숨겨진 파일이 기본적으로 glob에서 제외되기 때문입니다. POSIX 셸에서 일치 시키려면 패턴 시작 부분에 점을 명시 적으로 배치해야합니다. 에서 쉘 옵션을 설정할 수 있습니다 또는 변수가 적절하게 설정 될 수 있지만, 이것은 또 다른 질문입니다!bashdotglobGLOBIGNORE


1
현재 Windows 버전은보다 논리적으로 동작하는 것 같습니다. 특히 "별표 뒤에 나오는 점 이외의 문자는 효과가 없습니다"는 더 이상 사실이 아닙니다. 적어도 패턴으로 Windows 7 의 표준 파일 열기 대화 상자에서 파일을 필터링 할 때 *7.*확장명 앞의 마지막 문자가 a 7*sa*모든 파일을 가져 오십시오 sa. (따라서, 당신이 인용 문서의 제목은 어떻게 와일드 카드가 작동 MS-DOS에 ? . (강조는 자신 추가))
OR 매퍼

1
@ORMapper는 이것을 반영하기 위해 헤더를 업데이트했습니다. 이 동작은 Windows 95 이전 버전이며 대답은 헤더입니다.
Graeme

11

그것은 globbash에 있으며, 아래는 bash 매뉴얼에서 인용 한 것입니다.

강타-GNU Bourne-Again SHell

*

null 문자열을 포함하여 모든 문자열과 일치합니다. globstar 쉘 옵션이 사용 가능 *하고 경로 이름 확장 컨텍스트에서 *s사용되는 경우, 단일 패턴으로 사용 된 두 개의 인접 파일은 모든 파일 및 0 개 이상의 디렉토리 및 서브 디렉토리와 일치합니다. 뒤에 a가 오는 경우 /인접한 두 *s디렉토리 만 디렉토리 및 하위 디렉토리와 일치합니다.

이 경우 이름에 *.*점이 포함 된 파일을 모두 일치 .시킵니다.

자세한 내용은 여기를 참조 하십시오 .


8

별표 *glob쉘 언어입니다. 쉘 명령 언어 에서 인용 :

별표 ( '*')는 null 문자열을 포함하여 모든 문자열과 일치하는 패턴입니다.

그러나 .쉘 옵션 dotglob이 설정되어 있지 않으면 파일 이름과 일치하지 않습니다 .

를 사용하면 다음 *.*과 일치하는 항목과 일치합니다.

  • 로 시작하지 않습니다 .
  • 적어도 하나를 포함 .

매뉴얼의 파일 이름 확장 을 참조 할 수도 있습니다.


6

Windows에서 온 많은 사람들이 *.*모든 파일을위한 것이라고 생각 합니다. Windows에서는 그렇습니다. UNIX에서는 이름에 1 점 이상이 포함 된 모든 파일입니다. *그 자체로는 Windows에서 잘 작동합니다 (초기 DOS로 거슬러 올라갑니다). 그러나 오래된 교과서는 출판 *.*되었고 깨기 힘든 습관 인 것 같습니다.


4

*"globbing"이라고도 하는 파일 이름 확장 을 수행하기 위해 쉘에서 사용하는 와일드 카드 입니다. *아무것도 포함하지 않는 것으로 확장됩니다 (예 : *.*will match file.등). 다른 일반적인 와일드 카드는입니다 ?. 이는 단일 문자와 일치합니다.

이러한 와일드 카드의 기능을 정규식에서 같은 문자를 사용하는 것과 혼동하지 마십시오 (예 : grep과 함께 사용).


3

그것은 적어도 DOS (그리고 나중에 Windows) 세계에서는 별점 별 입니다. DOS에서 점 .은 특별한 마법의 의미를 지니고 있습니다. 파일 이름은 8 자로 된 문자 (나중에 확장되었지만 구식으로 유지하자)와 3 자로 된 확장명 (파일 형식을 정의 함)이기 때문입니다. 유닉스에서 파일 유형은 일반적으로 파일의 첫 두 바이트 (또는 다른 마술)에 의해 정의되며 확장자는 유익하지만 많은 의미가 없습니다. 이것이 모두 흐려진 경우를 제외하고.

따라서 유닉스에는 특별한 의미가 없습니다. 별표는 유닉스 쉘에서 "글 로빙"문자이며 임의의 수의 문자 (0 포함)에 대한 와일드 카드입니다. ?또 다른 일반적인 글러브 캐릭터로, 어떤 캐릭터와도 정확히 일치 합니다.

*.*하나 이상을 포함하는 모든 파일 이름과 일치합니다 .. 그것은 특별한 이름이 나 더 이상 의미하지 않는다 *a**_*. 그리고 *.?점과 그 점 다음에 정확히 하나의 문자가있는 모든 파일을 일치시킵니다. 더 복잡한 확장 글 로빙 패턴도 있습니다. 쉘의 매뉴얼 페이지를 참조하십시오.

"스타"가 가장 일반적인 이름인지 "새 해커 사전"(이전 MIT "전문 용어 파일"의 확장) 노트 *(다음 기호 splat), 그리고 그 연습에 여전히 사실이다 생각하고, ."일반적으로 확실히 도트 "로 표시됩니다. 따라서 대기업 심볼로 본질적인 특별한 의미는 없지만 시퀀스는 여전히 유닉스에서 스타 도트 스타 라고 불립니다 . (그다지 유용하지 않습니다.)


이상하게 들릴지 모르지만 "star dot star"를 언급 해 주셔서 감사합니다.이 페이지를 Google에서 사용할 수있게 만든 것입니다.
Score_Under

3

여기에는 실제로 별표 *와 점의 두 가지 기호가 있습니다 .. 껍질은 일반적으로 별표를 문자로만 해석하지만 정규식에서는 욕심 많은 글로브를 의미합니다. 이 경우 점으로 끝나지 않거나 점으로 시작하지만 하나 이상을 포함하는 항목과 일치합니다.

somefile.dot # match
.dot.between.words. # match
.onlydotatstart # don't match
onlydotatend. # match
.startandenddot. # don't match

1
당신의 onlydotatend.사건은 반드시 일치합니까?
Graeme

@Graeme nope. touch 'onlydotatend.' && echo *.*반환하지 않습니다
Braiam

1
나를 위해한다! bash와 둘 다 에 dash. 어떤 쉘을 사용하고 있습니까?
Graeme

@Graeme zsh, 그리고 당신은 bash가 맞지 않습니다.
Braiam

방금 바닐라 zsh구성 에서 시도했지만 작동합니다. onlydotatend.일치 하는 방법 을 이해하지 못합니다.이를 수행 하는 구성 옵션이 있습니까?
Graeme
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.