Rozszerzenia plików z rozróżnianiem wielkości liter w systemach Windows i Linux

8

W Linuksie można mieć pliki example.JPGi example.jpgw tym samym katalogu.

W systemie Windows masz rozszerzenia z rozróżnianiem wielkości liter, ale nie możesz umieścić tych dwóch plików w tym samym katalogu. Dlaczego nie?

wvdz
źródło
1
możliwy duplikat Czy wszystkie wersje systemu Windows nie uwzględniają wielkości liter? (prawdopodobnie jest lepsze pytanie)
Cole Johnson
FAT trzymał rozszerzenie oddzielnie od nazwy podstawowej, a system operacyjny dodał je .do celów wprowadzania i wyświetlania. (Uważam, że można bezpiecznie powiedzieć, że praktycznie nikt nie używa FAT do niczego poza współdziałaniem.) Nie wiem dokładnie, jak to robi NTFS, ale przypuszczam, że jest podobny do każdego większego systemu plików Linux, który po prostu traktuje nazwę pliku jako ciąg znaków. Nie ma nic specjalnego w rozszerzeniu pliku: jest to po prostu konwencja i jest traktowane przez system plików jako część nazwy pliku.
CVn
Spójrz w górę ObCaseInsensitivei superuser.com/q/266110/59271
Mehrdad
@grawity to nie tylko przypadek tomayto, tomahto?
wvdz

Odpowiedzi:

31

W systemie Windows masz rozszerzenia z rozróżnianiem wielkości liter, ale nie możesz umieścić tych dwóch plików w tym samym katalogu. Dlaczego nie?

Jeśli dysk jest sformatowany jako NTFS, możesz mieć oba example.JPGi example.jpg.

Jednakże, jeśli spróbujesz otworzyć jeden z tych plików w aplikacji Win32 , takich jak Notatnik, można mieć dostęp tylko do jednego z plików , niezależnie od przypadku pliku wpisanego w oknie dialogowym Otwieranie pliku.


W nazwach plików rozróżniana jest wielkość liter w woluminach NTFS

W ramach wymagań zgodności z POSIX, system plików Windows NT (NTFS) zapewnia rozróżnianie wielkości liter i konwencji nazewnictwa plików i katalogów. Mimo że NTFS i podsystem POSIX dobrze radzą sobie z rozróżnianiem wielkości liter, 16-bitowe aplikacje Windows, MS-DOS, OS / 2 i Win32 nie .

W systemie plików NTFS można tworzyć unikalne nazwy plików przechowywane w tym samym katalogu, które różnią się tylko wielkością liter. Na przykład następujące nazwy plików mogą współistnieć w jednym katalogu na woluminie NTFS:

CASE.TXT
case.txt
case.TXT

Jednakże, jeśli spróbujesz otworzyć jeden z tych plików w aplikacji Win32 , takich jak Notatnik, można mieć dostęp tylko do jednego z plików , niezależnie od przypadku pliku wpisanego w oknie dialogowym Otwieranie pliku.

...

NTFS obsługuje dwa nieznacznie różne tryby działania, które mogą być wybrane przez podsystem aplikacji współpracujący z NTFS. Pierwszy z nich uwzględnia wielkość liter i wymaga, aby nazwy plików dostarczone przez aplikację były zgodne z nazwami przechowywanymi na dysku, w tym wielkość liter, jeśli plik na dysku ma zostać wybrany. Drugim trybem działania jest zachowanie wielkości liter, ale bez rozróżniania wielkości liter. Oznacza to, że aplikacje mogą wybierać pliki na dysku, nawet jeśli podana nazwa różni się w przypadku od nazwy zapisanej na dysku. Pamiętaj, że oba tryby zachowują wielkość liter używanych do tworzenia plików. Podana tutaj różnica w zachowaniu dotyczy tylko sytuacji, gdy aplikacja musi zlokalizować istniejący plik. POSIX korzysta z trybu pełnego rozróżniania wielkości liter, podczas gdy MS-DOS, WOW iPodsystemy Win32 używają trybu bez rozróżniania wielkości liter .

W nazwach plików źródłowych rozróżniana jest wielkość liter w woluminach NTFS :


W praktyce nie byłem w stanie tego osiągnąć

Aby uzyskać dwa pliki w tym samym katalogu, różniące się tylko przypadkami, musisz włączyć podsystem Posix .

POSIX korzysta z trybu pełnego rozróżniania wielkości liter, podczas gdy podsystemy MS-DOS, WOW i Win32 używają trybu bez rozróżniania wielkości liter.

Aby włączyć Posix, zobacz:

DavidPostill
źródło
To dla mnie nowość. Tymczasowo jednak musiałem głosować za tym, ponieważ chociaż masz cytaty, w praktyce nie byłem w stanie tego osiągnąć . Czy mógłbyś przekazać instrukcje, jak można to osiągnąć w praktyce?
MDMoore313,
7
@BigHomie To jest powłoka systemu Windows, która Cię powstrzymuje. NTFS może przechowywać pliki a.JPG i a.jpg w tym samym katalogu. Jeśli włączysz podsystem uniksowy (przestarzałe), w nazwach plików rozróżniana jest również wielkość liter w powłoce Eksploratora Windows. technet.microsoft.com/en-us/library/cc771470.aspx
Furkan Omay
1
@ FurkanOmay, widzę stary dobry podsystem unix, dzięki za to.
MDMoore313,
1
@FurkanOmay wiedziałem, co masz na myśli;)
MDMoore313
@BigHomie Odpowiedź zaktualizowana, aby wyjaśnić, jak włączyć posix
DavidPostill
6

NTFS rozróżnia wielkość liter (i w zależności od tego, jak patrzysz na szkło, może to być dobra lub zła rzecz). W rzeczywistości osiągnięcie niewrażliwości na przypadki było wyzwaniem na początku, ponieważ NIE trzeba było rozróżniać wartości ASCII dla az i AZ.

Nie ma sposobu, aby rozróżnić wielkość liter w systemie Windows (OS), mimo że NTFS (system plików) używany obecnie przez system operacyjny Windows może obsługiwać zgodność z POSIX.

Według Microsoftu możesz mieć przykład.JPG i przykład.jpg w tym samym katalogu na NTFS ( kliknij tutaj ), ale system operacyjny (Wszystkie wersje systemu Windows) go nie obsługuje, co sprawia, że ​​system plików może być bezcelowy :)

W ramach wymagań zgodności z POSIX, system plików Windows NT (NTFS) zapewnia rozróżnianie wielkości liter i konwencji nazewnictwa plików i katalogów . Mimo że NTFS i podsystem POSIX dobrze radzą sobie z rozróżnianiem wielkości liter, 16-bitowe aplikacje Windows, MS-DOS, OS / 2 i Win32 nie.

Dhiwakar Ravikumar
źródło
1
Niewrażliwość na wielkość liter nie jest taka trudna, szczególnie w kodowaniu takim jak ASCII. DOS to zrobił, CP / M to zrobił. Niewrażliwość na przypadek wraz z zachowaniem tego przypadku jest trudniejsza do złamania. Z pewnością nie jest to trudne, ale trudniejsze do zrobienia w konsekwentny sposób, gdy możesz mieć szczęście, że masz 16-32 KB pamięci RAM do gry, a to musi utrzymywać aplikację wykonującą naprawdę przydatne rzeczy.
CVn