Windows 7에서 폴더 이름을 "._."로 지정할 수없는 이유는 무엇입니까?


74

방금 폴더 이름을 지정할 수 없다는 것을 알았습니다 . 대신 ._.이름이 지정 ._됩니다. 때로는 이름을 지정한 직후 사라지지만보기를 새로 고친 후에 다시 나타납니다. 파일 이름 끝에 점이있는 Windows에 문제가있는 것 같습니다. 왜 그렇습니까?


21
주목할만한 점은 Windows에서 파일 이름으로 시작하기 위해 "해킹" 을 우연히 발견 한 것 .입니다.
jpmc26

8
@ThisNameBetterBeAvailable 테스트되지 않았지만 cd -- -_-작동 할 수 있습니다. 는 --마커 공통 "옵션의 끝"입니다.
TripeHound

13
@ThisNameBetterBeAvailable 아니요, --그 자체로 " 이것은 옵션의 끝입니다. 시작하는 모든 -것을 리터럴 값으로 취급하십시오 ". 그냥 테스트 : mkdir -- -_-그리고 cd -- -_-내가 예상대로 작동합니다.
TripeHound

2
또는 ./-_-잘 작동해야합니다.
glglgl

5
@Alexander 리눅스에서는 주석이 어디로 갔는지 알기 때문에 cd "-_-"쉘은 그룹화를 위해 인용 부호를 사용하지만 인수의 일부로 취급하지는 않습니다. invalid option
Izkata

답변:


123

Windows에서는 일반적으로 파일에 확장자가 없거나 1 자 이상의 확장자가 있어야합니다. 길이가 0 인 확장명 (예 :로 끝나는 파일 이름)은 멋지지 않습니다 .. 폴더도 확장명을 가질 수 있으므로 Windows에서는 이름이로 끝나지 않습니다 .. DavidPostill이 링크 한 기사 에서 출처 :

마침표를 사용하여 기본 파일 이름을 디렉토리 또는 파일 이름의 확장자와 분리 하십시오 .

(Emphasis mine.) 마침표로 이름이 지정된 파일 또는 디렉토리를 종료하려고하면 Windows는 사용자가 확장자를 원하지 않는다고 가정하므로 md명령 프롬프트에서 파일 을 만들더라도 제거 합니다.

위험 지대! 폴더 이름이으로 끝나기를 정말로 원한다면 .의 마법 원시 이름 재정의 시퀀스를 사용해야합니다 \\?\. 명령 프롬프트에서 md \\?\C:\path\to\container\._.실제로라는 이름의 폴더를 만들지 ._.만 많은 프로그램, 폴더에 문제가 있습니다. 탐색기 :

._.  문제

이러한 디렉토리는 이름 rd뒤에 만 제거 \\?\하거나 짧은 dir /x이름 (8.3, )으로 이름을 바꿀 수 있습니다.


1
자세한 답변 감사합니다! :) 나는 이것이 폴더 안에 암호와 같은 비밀을 숨길 수있는 완벽한 폴더라고 생각합니다. 먼저 폴더 이름을 바꿀 때만 폴더를 열 수 있으며 모든 사람이 이름을 바꾸는 방법을 알지 못하기 때문입니다.
Black

19
@EdwardBlack 스택 교환을 읽을 수있는 사람을 막을 수는 없습니다 (따라서 가상의 남동생에 대한 보안을 제공하지 않을 것입니다). 에 의해 주어진 이름 dir /x은 매우 쉬워지고,이 이름이 편리한 다른 경우가 있습니다.
Chris H

11
Cygwin의 명령 줄 도구 인 FWIW는 마법의 순서를 사용하지 않고도 Windows 7에서 이러한 디렉터리를 만들고 조작 할 수 있습니다.
Steve Jessop

4
@EdwardBlack Chris H가 언급했듯이 비밀이 아니므로 그러한 폴더에 특히 중요한 것을 저장해서는 안됩니다. 또한 디지털 비밀과 보호는 여러 번 해결 된 문제입니다. 불분명 한 폴더 이름에 의존하지 않고 여러 가지 암호화 방법 및 프로그램을 사용하여 안전하게 보관할 수 있습니다.
Kris Harper

3
Nitpick : 8.3 일 이상 (NTFS에서 디스크에 기록 된 내용을 조사하지 않았 음) 기간은 처음에 디스크에 기록되지 않았습니다. 이름은 이름과 확장명으로 분리되어 별도로 저장되었습니다. 읽을 때 이름이 붙었고 확장명이 있으면 마침표와 확장명이 이름에 추가되었습니다. 따라서 ._.를 표현할 방법이 없었습니다 물론 디렉토리 구조에서 후행 점을 잃었습니다.
Loren Pechtel

22

파일 이름 끝에 점이있는 Windows에 문제가있는 것 같습니다. 왜 이런거야?

파일이나 디렉토리 이름을 공백이나 마침표로 끝내지 마십시오. 기본 파일 시스템이 이러한 이름을 지원할 수 있지만 Windows 셸 및 사용자 인터페이스는 지원하지 않습니다.

아래의 소스 링크는 이름 지정 규칙에 대한 자세한 정보를 제공합니다.

소스 이름 지정 파일, 경로 및 네임 스페이스


5
이것은 여전히 ​​나에게 버그처럼 들린다.
ralu

@ralu 만약 이것이 버그라면 MS는 그것을 고치는 데 전혀 관심이없는 것처럼 보인다. 이러한 제한은 Windows XP 이후 (이전이 아닌 경우) 이후에있었습니다.
DavidPostill

윈도우 XP? 내 생각 엔 이러한 제한은 MS-DOS 0.x에 뿌리를두고있다. 게이츠 씨에게 문제를 해결해달라고 요청하자.
Christian Severin

17

버그가 아닙니다. 호환성 문제를 방지하기위한 것입니다.
DOS 시절의 남은 음식입니다.

FAT12 (플로피) 및 FAT16 파일 시스템 (Windows 95에 도입 된 긴 파일 이름 지원 이전의 FAT16)에는 파일 이름이 11 바이트 (이름은
8 바이트, 확장자는 3 바이트 )로만 저장되었습니다 . 이름과 확장명 사이의 "마침표"는 저장되지 않았습니다. 표시 목적으로 암시되고 자동으로 추가되었습니다.
디렉토리에는 전혀 확장이 없었습니다. 대신 확장명에 대한 3 바이트는 "$"문자로 채워졌습니다 (실제 이름에는 유효하지 않음).
Windows는 여전히이 탐색기와 호환되며 Windows의 다른 많은 구성 요소는 호환성 문제를 방지하기 위해 마지막 기간이 자동으로 사라집니다.
다른 사람들이 언급했듯이 실제로 RAW 의미를 사용하여 이러한 폴더를 실제로 처리 할 수 ​​있습니다 (절대 경로 이름 앞에 \\? \ 접두사).
배후에서 NTFS 및 네트워크 파일 시스템은 이러한 파일 및 폴더에 문제가 없습니다. Explorer가 사용자가 다른 소프트웨어에 문제를 일으킬 수있는 무언가를 만들지 못하게하는 경우입니다.

(사실 다른 남은 부분도 있습니다.
COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON과 같은 파일 이름으로 인해 탐색기와 다른 많은 Windows 부분이 모두 혼동되는 비슷한 문제가 발생할 수 있습니다. 이러한 이름은 DOS 시대부터 시작된 "예약 된"이름이므로)


3
점이 저장되지 않는다는 점에서 처음에 믿었던 다른 독자들에게는 CP / M과 FAT16FAT32를 포함한 모든 FAT 버전에 맞습니다 .
벤 N

1
는 C에 foo.bar : 어떻게 든라는 이름의 파일을 작성 관리하여 한 번 나에게 진정한 슬픔을주는 (아마 직접 INT13 기능을 사용하여 실제 DOS에서 실행) 오래된 DOS 프로그램을 기억 ... 드라이브
rackandboneman

2
@ BenN : 실제로 FAT32에서는 약간 다릅니다. 짧은 파일 이름 ( "암시 적 도트"와 호환되는 이름이있는 8 + 3 바이트)과 긴 파일 이름 (LFN이라고도 함)과 최대 255 개의 UCS-2 문자 (명시 적 도트 포함)를 저장합니다. 16 비트 응용 프로그램을 사용하는 경우 항상 LFN을 사용합니다.
Matteo Italia

1
@MatteoItalia 긴 파일 이름이 가짜 파일 항목으로 유지된다는 것을 이해합니다. 알려진 Windows 설치에서는 이러한 항목을 찾아 가능하면 SFN 대신 해당 항목을 렌더링합니다. 참조 레이몬드 첸의 주제에 포스트 , 또는 내가 위의 링크 된 FAT32 포맷 사양의 VFAT 부분.
벤 N

1
-1 디렉토리 확장에 대해 틀 렸습니다. 어쩌면 CP / M의 경우 (내 메모리가 그 OS에 대해 엉망입니다) DOS 시간 이후 내 트리에서 "programm.ing"디렉토리를 사용하고 있으며 win.tue.nl/~aeb/linux/를 참조하십시오 . fs / fat / fat-1.html- 디렉토리 항목은 파일로 정확하게 처리되며 8.3 이름도 가질 수 있습니다. 테스트 : 8.3 디렉토리 ( mkdir testfile.name)를 만들고 Windows ( dir /x) 에 DOS 이름을 표시하십시오 - TESTFI~1.NAM예상대로.
vaxquis

3

여기서 문제는 FAT 파일 시스템에서 Windows (DOS)가 8.3 파일 이름을 허용한다는 것입니다. 의미는 8 자이며 뒤에. 그 뒤에 세 문자가옵니다. 유닉스와 리눅스는 /와 \ 0을 제외한 모든 문자를 허용합니다. \ 0은 C 문자열 종결 자이며 /는 디렉토리 구분 기호입니다. 다른 모든 것을 사용할 수 있습니다.

Windows 95는 짧은 (8.3) 파일 이름의 데이터베이스를 LFN (Long File Names) 메타 데이터로 유지하여이 문제를 해결했습니다. Windows 95 OS 파일을 지우면 다음 Windows 95 설치시 이상한 이름의 파일이 디스크에 남게됩니다. 예를 들어, 디스크에서 "내 문서"의 이름은 MYDOCU ~ 1 일 수 있습니다. 메타 데이터를 잃어버린 경우에는 쉽게 변환 할 수 없습니다.

쉘은 MS-DOS 시절 이후로 많은 역사적 증가에 대처해야합니다.

도움이 되었기를 바랍니다


1
실제로 데이터베이스 자체는 없었습니다. Windows는 긴 파일 이름의 일부를 디스크에 가짜 파일로 걸렸습니다. 이 주제에 관한 Raymond Chen의 게시물을 참조하십시오 .
벤 N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.