이 질문은 내가 파일 이름과 관련하여 의견이있는 프레임 워크에 의존하는 개발 프로젝트를 진행하던 어느 날 나에게 일어났다. 프레임 워크 (여기에서는 관련이 없음)는 대문자로 된 첫 번째 파일 이름을 보려고했습니다. 이것은 나를 생각하게했다.
대소 문자를 구분하지 않는 파일 시스템에서 extFAT 또는 HFS + (특히 대소 문자를 구분하지 않음)에서 파일 시스템 은 파일 이름의 대문자 및 소문자 버전이 모두 같은 파일에 어떻게 액세스 할 수 있습니까 ?
예를 들면 다음과 같습니다.
$ cd ~/Documents
$ pwd
/home/derp/Documents
$ cd ../documents
$ pwd
/home/derp/documents
$ cd ../docuMents
$ pwd
/home/derp/docuMents
$ cd ../DOCUMENTS
$ pwd
/home/derp/DOCUMENTS
$ cd ../documentS
$ pwd
/home/derp/documentS
이러한 모든 명령은 동일한 디렉토리로 해석됩니다. 이 동작, 특히이 경우 pwd
의 함수의 출력은 bash
보고 싶은 생각을 보여줍니다.
또 다른 예:
$ ls ~/Documents
Derp.txt another.txt whatThe.WORLD
여기서 파일 시스템은 사용자 나 프로그램이 만든 원래 파일 이름의 경우를보고합니다.
파일 시스템 스택의 어느 시점에서 사람이 읽을 수있는 파일 이름은 파일이 생성 될 때 보존되므로 (예 : 대문자와 소문자) 올바른 대문자와 소문자 ASCII 문자의 조합으로 액세스 할 수 있습니까? 이것은 어딘가에 정규식 트릭입니까 아니면 다른 일이 있습니까?
편집 : 그것은 내가에서 발견에 대해 궁금 동작처럼 보이는 경우 보존 좀 더 연구 한 후 대소 문자 구분 파일 시스템 …
답변
대소 문자를 구분하지 않는 파일 시스템은 파일 시스템이 “A가 B와 동일한 파일 / 디렉토리를 참조합니까?” 대문자 / 소문자의 차이를 무시하고 파일 / 디렉토리의 이름을 비교합니다 (정확하게 대문자 / 소문자 차이가 파일 시스템에 따라 달라지는 것은 ASCII를 넘어 서면 분명하지 않습니다). 대소 문자 구분 파일 시스템은 이러한 차이점을 무시하지 않습니다.
대소 문자 보존 파일 시스템은 주어진 파일 이름을 저장합니다. 대소 문자를 보존하지 않는 파일 시스템은 그렇지 않습니다. 일반적으로 문자를 저장하기 전에 모든 문자를 대문자로 변환합니다 (이론적으로 소문자 또는 RaNsOm NoTe 케이스 등을 사용할 수 있지만 AFAIK는 모든 실제 문자를 대문자로 사용함).
이 두 속성을 조합하여 조합 할 수 있습니다. 대소 문자를 구분하지 않고 대소 문자를 구분하는 파일 시스템을 찾을 수 있는지 확실하지 않지만 확실히 만들 수는 있습니다. 그러나 다른 모든 조합은 실제 시스템에 존재하거나 존재합니다.
따라서 대소 문자를 구분하지 않고 대소 문자를 구분하지 않는 파일 시스템 (요즘 가장 일반적인 유형의 대소 문자를 구분하지 않는 파일 시스템)은 파일 이름을 대문자 또는 마지막으로 바꾼 이름으로 저장하고 반환하지만 두 파일 이름을 비교할 때 (하나를 확인하기 위해) 존재하거나, 열거 나, 삭제하는 등) 대소 문자 차이는 무시합니다.
당신은 유닉스 상자에 대소 문자를 구분 파일 시스템을 사용하는 경우 유닉스는 전통적으로 그들이 기대하지 않을 수 있도록-파일 시스템 대소 문자를 사용하기 때문에, 다양한 유틸리티는 이상한 일을 할 것이다 Document1
과 document1
같은 파일이 될 수 있습니다.
이 pwd
경우 기본적으로 실제로 디렉토리에 도착하는 경로를 출력한다는 것입니다. 따라서를 통해 도착 하면 출력에 cd DirName
사용 DirName
됩니다. 당신이 거기를 통해 가지고 있다면 DiRnAmE
, 당신은 볼 수 DiRnAmE
출력에. Bash는 $PWD
환경 변수 에서 현재 디렉토리에 도달 한 방법을 추적하여이를 수행 합니다. 주로 심볼릭 링크를위한 것입니다 (심볼릭 링크 cd
를 사용하는 경우 pwd
실제로는 현재 디렉토리 경로의 일부가 아니더라도 심볼릭 링크가 표시됩니다 ). 그러나 대소 문자를 구분하지 않는 파일 시스템에서 관찰되는 다소 이상한 동작을 제공합니다. 나는 의심 pwd -P
디스크에 저장 케이스를 사용하면 디렉토리 이름을 줄 것이다,하지만 테스트하지 않았습니다.