Dlaczego w systemie plików NTFS rozróżniana jest wielkość liter?

24

Osobiście uważałem, że NTFS nie rozróżnia wielkości liter, ponieważ możesz pisać cmd, CMD, cMd, a nawet CmD i nadal otrzymywać wiersz polecenia. Dlaczego jednak CHKDSK x: /f /rw niektórych plikach czasami naprawia wielkie litery? Jeśli nie obchodzi go sprawa, nie powinno to mieć znaczenia, a CHKDSK nie powinien sprawdzać, czy to rzeczywiście CMD czy cmd. Czy mam rację? Gdzie to właściwie ma znaczenie w systemie plików?

Kanadyjczyk Luke REINSTATE MONICA
źródło
25
Pamiętaj, że „rozróżnianie wielkości liter” i „zachowanie wielkości liter” to dwie osobne rzeczy. NTFS zachowuje wielkość liter, ale nie rozróżnia wielkości liter w przestrzeni nazw Win32, ale może rozróżniać wielkość liter w przestrzeni nazw POSIX.
grawity

Odpowiedzi:

34

Rozróżnianie wielkości liter w systemie plików jest kwestią odrębną od kwestii systemu operacyjnego. Najnowsze wydania systemu Windows oparte są na jądrze NT, które dziedziczy wiele właściwości nie Windows NT 95, a nawet MS-DOS. Wraz z jądrem NT system plików NTFS zaprojektowano tak, aby rozróżniał wielkość liter - aby był zgodny z POSIX .

Chociaż podsystem Win32 nie obsługuje nazw plików, które różnią się jedynie wielkością liter, możliwe jest tworzenie tych plików za pomocą wywołań systemowych niższego poziomu.

Szczery
źródło
1
Nie znam łatwego sposobu tworzenia takich plików w systemie Windows. Jednak wywołanie funkcji API CreateFile () z bitem FILE_FLAG_POSIX_SEMANTICS powinno wykonać zadanie programowo.
Frank
2
@Luke: Win32 nie obsługuje plików z rozróżnianiem wielkości liter. Będziesz musiał wykonywać wywołania API do podsystemu systemu operacyjnego. osronline.com/article.cfm?id=91
surfasb
2
@Luke: Jednym prostym sposobem byłoby zamontowanie dysku NTFS z systemu Linux i utworzenie tam plików, które tam chcesz :)
Hippo
1
Upewnij się tylko, że masz odpowiednią wersję systemu Windows NT i zainstaluj narzędzia Podsystem aplikacji UNIX, ludzie.
JdeBP,
1
@Luke: Jak zwykle Wikipedia na ratunek. :-)
afrazier
7

W rzeczywistości nie pytasz o NTFS.

NTFS to system plików. Twoje pytanie dotyczy naprawdę rozróżniania wielkości liter w powłoce poleceń systemu Windows. Oni są zupełnie inni. Eksplorator Windows to graficzna powłoka poleceń. Polecenie cmd(na przykład w Start | Uruchom) nakazuje powłoce poleceń systemu Windows wykonanie polecenia cmd(która w rzeczywistości jest inną powłoką poleceń, ale oparta na linii poleceń, a nie graficznym).

Podobnie CHKDSK nie sprawdza, czy użyto CMD czy cmd. Wszystko, o czym CHKDSK wie, to parametry, które mu przekazujesz, którymi w tym przypadku są x :, / f i / r.

Jeśli chodzi o „naprawianie wielkich liter” w CHKDSK, nie jestem do końca pewien, co masz na myśli.

squillman
źródło
4
W systemie plików NTFS rozróżniana jest wielkość liter. Zgodnie z artykułem MS KB 100625: W systemie plików NTFS można tworzyć unikatowe nazwy plików przechowywane w tym samym katalogu, które różnią się tylko przypadkami. Na przykład następujące nazwy plików mogą współistnieć w jednym katalogu na woluminie NTFS: CASE.TXT case.txt case.TXT Jeśli jednak spróbujesz otworzyć jeden z tych plików w aplikacji Win32, takiej jak Notatnik, będziesz mieć dostęp tylko do jednego z plików, niezależnie od wielkości nazwy pliku, którą wpisujesz w oknie dialogowym Otwórz plik.
Frank
To prawda, dziękuję za wyjaśnienie. Wyciągnąłem to z mojej odpowiedzi, ponieważ tak naprawdę nie chodzi tutaj o to.
squillman
> Jeśli jednak spróbujesz otworzyć jeden z tych plików w aplikacji Win32, takiej jak Notatnik, będziesz miał dostęp tylko do jednego z tych plików, niezależnie od wielkości nazwy pliku, którą wpisujesz w oknie dialogowym Otwórz plik. Który?
Synetech
4
@Synetech: Być może pierwszy? Zależy od kolejności plików w katalogu i ewentualnie fazy księżyca.
grawitacja
5

Podejrzewam, że pytanie osoby zadającej pytanie, że program chkdsk.exe „naprawia wielkie litery w niektórych plikach”, jest w rzeczywistości monitowane przez komunikat CHKDSK, który występuje w pewnych okolicznościach:

poprawianie błędów w pliku wielkich liter

Zasadniczo wynika to z wersji chkdsk.exe systemu Windows XP działającej z woluminem NTFS sformatowanym w późniejszej wersji systemu Windows, jak opisano w komunikacie o błędzie podczas uruchamiania programu Chkdsk.exe w systemie Windows XP lub Windows Komputer z systemem Server 2003: „Korygowanie błędów w pliku wielkich liter” . Rezultatem jest to, że tak naprawdę nie jest to błąd i nie ma to nic wspólnego z rozróżnianiem wielkości liter.

kreemoweet
źródło