Perché NTFS distingue tra maiuscole e minuscole?


24

Personalmente ho pensato che NTFS non facesse distinzione tra maiuscole e minuscole, poiché è possibile digitare cmd, CMD, cMd o persino CmD e ottenere ancora il prompt dei comandi. Tuttavia, perché durante a CHKDSK x: /f /r, a volte corregge le maiuscole in alcuni file? Se non è interessato al caso, non dovrebbe importare a questo proposito e CHKDSK non dovrebbe verificare se si tratta effettivamente di CMD o cmd. Ho ragione? Dove importa davvero nel file system?


25
Nota che "case sensitive" e "case-preserving" sono due cose separate. NTFS mantiene la distinzione tra maiuscole e minuscole ma distingue tra maiuscole e minuscole nello spazio dei nomi Win32, ma può fare distinzione tra maiuscole e minuscole nello spazio dei nomi POSIX.
Grawity,

Risposte:


34

La distinzione tra maiuscole e minuscole di un file system è un problema separato da quello di un sistema operativo. Le ultime versioni di Windows si basano sul kernel NT, che eredita molte proprietà di Windows 95 non NT e persino di MS-DOS. Insieme al kernel NT, il file system, NTFS, è stato progettato per distinguere tra maiuscole e minuscole, per essere conforme a POSIX .

Sebbene il sottosistema Win32 non supporti nomi di file che differiscono solo per la distinzione tra maiuscole e minuscole, è possibile creare quei file con chiamate di sistema di livello inferiore.


1
Non sono a conoscenza di un modo semplice per creare tali file in Windows. Tuttavia, la chiamata dell'API CreateFile () con il bit FILE_FLAG_POSIX_SEMANTICS dovrebbe eseguire il lavoro a livello di codice.
Frank,

2
@Luke: Win32 non supporta i file case sensitive. Dovrai effettuare chiamate API nel sottosistema OS. osronline.com/article.cfm?id=91
surfasb

2
@Luke: un modo semplice sarebbe montare l'unità NTFS da un sistema Linux e creare i file che desideri lì :)
Hippo

1
Assicurati di avere la versione corretta di Windows NT e installa il sottosistema per le applicazioni basate su UNIX, persone.
JdeBP,

1
@Luke: come al solito, Wikipedia in soccorso. :-)
Afrazier

7

In realtà non è NTFS che ti stai chiedendo.

NTFS è il filesystem. La tua domanda riguarda davvero la distinzione tra maiuscole e minuscole della shell dei comandi di Windows. Sono completamente diversi. Windows Explorer è una shell di comando grafica. Entrando cmd(ad esempio in Start | Esegui) stai dicendo alla shell dei comandi di Windows di eseguire il comando cmd(che in realtà è un'altra shell di comandi, ma basata sulla riga di comando anziché grafica).

Allo stesso modo, CHKDSK non sta facendo alcun tipo di controllo sull'uso di CMD o cmd. Tutto ciò che CHKDSK conosce sono i parametri che gli passi, che in questo caso sono x :, / f e / r.

Per quanto riguarda CHKDSK "correzione delle maiuscole", non sono sicuro di cosa tu voglia dire.


4
NTFS distingue tra maiuscole e minuscole. Secondo l'articolo 100625 di MS KB: In NTFS, è possibile creare nomi di file univoci, memorizzati nella stessa directory, che differiscono solo nel caso. Ad esempio, i seguenti nomi di file possono coesistere in una directory su un volume NTFS: CASE.TXT case.txt case.TXT Tuttavia, se si tenta di aprire uno di questi file in un'applicazione Win32, ad esempio Blocco note, si avrà accesso solo a uno dei file, indipendentemente dal caso del nome file digitato nella finestra di dialogo Apri file.
Frank,

È vero, grazie per averlo chiarito. Ho tolto un po 'la mia risposta dal momento che non è in realtà ciò che è in discussione qui.
Squillman,

> Tuttavia, se si tenta di aprire uno di questi file in un'applicazione Win32, come Blocco note, si avrà accesso solo a uno dei file, indipendentemente dal caso del nome file digitato nella finestra di dialogo Apri file Quale?
Synetech,

4
@Synetech: il primo, forse? Dipende dall'ordine dei file nella directory e possibilmente dalla fase lunare.
Grawity il

5

Ho il sospetto che l'affermazione di Asker secondo cui chkdsk.exe sta "correggendo le maiuscole in alcuni file" sia effettivamente richiesta dal messaggio di CHKDSK che si verifica in alcune circostanze:

correzione errori nel file maiuscolo

Fondamentalmente, questo risulta da una versione di Windows XP di chkdsk.exe in esecuzione su un volume NTFS che è stato formattato in una versione successiva di Windows, come descritto nel messaggio di errore quando si esegue Chkdsk.exe su Windows XP o Windows Computer basato su Server 2003: "Correzione degli errori nel file maiuscolo" . Il risultato è che questo non è davvero un errore e non ha nulla a che fare con la distinzione tra maiuscole e minuscole.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.