Extensiones de archivo sensibles a mayúsculas y minúsculas en Windows y Linux

10

En Linux puedes tener los archivos example.JPGy example.jpgen el mismo directorio.

En Windows tiene extensiones sensibles a mayúsculas y minúsculas, pero no puede colocar estos dos archivos en el mismo directorio. Por qué no?

wvdz
fuente
1
posible duplicado de ¿Todas las versiones de Windows no distinguen entre mayúsculas y minúsculas? (probablemente haya una pregunta mejor que esa)
Cole Johnson
FAT mantuvo la extensión separada del nombre base, y el sistema operativo agregó el .para fines de entrada y visualización. (Creo que es seguro decir que prácticamente nadie usa FAT para nada excepto la interoperabilidad en estos días). No sé exactamente cómo lo hace NTFS, pero supongo que es similar a todos los principales sistemas de archivos de Linux, que simplemente trata el nombre del archivo como Una cadena de caracteres. La extensión del archivo no tiene nada de especial: es simplemente por convención y el sistema de archivos lo trata como parte del nombre del archivo.
un CVn
Mirar hacia arriba ObCaseInsensitivey superuser.com/q/266110/59271
user541686
@grawity no es solo un caso de tomayto, tomahto?
wvdz

Respuestas:

32

En Windows tiene extensiones sensibles a mayúsculas y minúsculas, pero no puede colocar estos dos archivos en el mismo directorio. Por qué no?

Si una unidad está formateada como NTFS, puede tener ambos example.JPGy example.jpg.

Sin embargo, si intenta abrir uno de estos archivos en una aplicación Win32 , como el Bloc de notas, solo tendrá acceso a uno de los archivos , independientemente del caso del nombre de archivo que escriba en el cuadro de diálogo Abrir archivo.


Los nombres de archivo distinguen entre mayúsculas y minúsculas en volúmenes NTFS

Como parte de los requisitos para el cumplimiento POSIX, el Sistema de archivos de Windows NT (NTFS) proporciona una convención de nomenclatura de archivos y directorios que distingue entre mayúsculas y minúsculas. Aunque NTFS y el subsistema POSIX manejan bien las mayúsculas y minúsculas, las aplicaciones basadas en Windows de 16 bits, MS-DOS, OS / 2 y Win32 no lo hacen .

En NTFS, puede crear nombres de archivo únicos, almacenados en el mismo directorio, que difieren solo en el caso. Por ejemplo, los siguientes nombres de archivo pueden coexistir en un directorio en un volumen NTFS:

CASE.TXT
case.txt
case.TXT

Sin embargo, si intenta abrir uno de estos archivos en una aplicación Win32 , como el Bloc de notas, solo tendrá acceso a uno de los archivos , independientemente del caso del nombre de archivo que escriba en el cuadro de diálogo Abrir archivo.

...

NTFS admite dos modos de operación ligeramente diferentes que pueden ser seleccionados por el subsistema de la aplicación que interactúa con NTFS. El primero distingue entre mayúsculas y minúsculas y exige que los nombres de archivo proporcionados por la aplicación coincidan con los nombres almacenados en el disco, incluido el caso, si se selecciona el archivo en el disco. El segundo modo de operación es preservar mayúsculas y minúsculas, pero no es sensible a mayúsculas y minúsculas. Esto significa que las aplicaciones pueden seleccionar archivos en el disco incluso si el nombre proporcionado difiere en el caso del nombre almacenado en el disco. Tenga en cuenta que ambos modos conservan el caso utilizado para crear los archivos. La diferencia de comportamiento observada aquí se aplica solo cuando una aplicación necesita localizar un archivo existente. POSIX aprovecha el modo de mayúsculas y minúsculas, mientras que MS-DOS, WOW yLos subsistemas Win32 utilizan el modo sin distinción entre mayúsculas y minúsculas .

Los nombres de los archivos de origen distinguen entre mayúsculas y minúsculas en los volúmenes NTFS :


En la práctica, no pude lograr esto

Para lograr dos archivos en el mismo directorio que difieran solo en caso de que necesite habilitar el subsistema Posix .

POSIX aprovecha el modo de mayúsculas y minúsculas, mientras que los subsistemas MS-DOS, WOW y Win32 usan el modo de mayúsculas y minúsculas.

Para habilitar Posix ver:

DavidPostill
fuente
Esto es nuevo para mí. Sin embargo, tuve que rechazar esto temporalmente porque, aunque tienes citas, en la práctica, no pude lograr esto . ¿Le importaría proporcionar instrucciones sobre cómo se puede lograr esto en la práctica?
MDMoore313
77
@BigHomie Ese es el shell de Windows, que te impide. NTFS puede contener a.JPG y a.jpg en el mismo directorio. Si habilita el subsistema Unix (en desuso), los nombres de archivo también distinguen entre mayúsculas y minúsculas en Windows Explorer Shell. technet.microsoft.com/en-us/library/cc771470.aspx
Furkan Omay
1
@FurkanOmay Ya veo, buen viejo subsistema de Unix, gracias por eso.
MDMoore313
1
@FurkanOmay, sabía lo que querías decir;)
MDMoore313
@BigHomie Respuesta actualizada para explicar cómo habilitar posix
DavidPostill
6

NTFS es sensible a mayúsculas y minúsculas (y dependiendo de cómo veas el cristal, puede ser algo bueno o malo). En realidad, lograr la insensibilidad a los casos fue un desafío en los primeros días, ya que no tenía que diferenciar entre los valores ASCII para az y AZ.

No hay forma de hacer que Windows (el sistema operativo) distinga entre mayúsculas y minúsculas, a pesar de que NTFS (el sistema de archivos) utilizado por el sistema operativo Windows en estos días puede admitir para cumplir con POSIX.

Según Microsoft, podría tener example.JPG y example.jpg en el mismo directorio en NTFS ( haga clic aquí ), pero el sistema operativo (Todas las versiones de Windows) no lo admite, lo que hace que el sistema de archivos no tenga sentido :)

Como parte de los requisitos para el cumplimiento de POSIX, el Sistema de archivos de Windows NT (NTFS) proporciona una convención de nomenclatura de archivos y directorios que distingue entre mayúsculas y minúsculas . Aunque NTFS y el subsistema POSIX manejan bien la sensibilidad a mayúsculas y minúsculas, las aplicaciones basadas en Windows de 16 bits, MS-DOS, OS / 2 y Win32 no lo hacen.

Dhiwakar Ravikumar
fuente
1
La insensibilidad a mayúsculas y minúsculas no es tan difícil, especialmente en codificaciones como ASCII. DOS lo hizo, CP / M lo hizo. La insensibilidad de la caja junto con la preservación de la caja es la tuerca más difícil de romper. Ciertamente, no es difícil de hacer, pero es más difícil hacerlo de manera consistente cuando tenga la suerte de tener 16-32 KB de RAM para jugar y eso necesita contener una aplicación que también haga cosas realmente útiles.
un CVn