Resumen:
- Windows: cualquier cosa excepto los caracteres de control ASCII y
\/:*?"<>|
- Linux, OS-X: cualquier cosa excepto nulo o
/
En todas las plataformas, es mejor evitar los caracteres no imprimibles, como los caracteres de control ASCII.
Ventanas
En Windows, el Explorador de Windows no permite caracteres de control o \/:*?"<>|
puede usar espacios. Si usa espacios, a menudo tendrá que citar el nombre del archivo cuando lo use desde la línea de comandos (pero las aplicaciones GUI no se ven afectadas hasta donde yo sé). El sistema de archivos de Windows como NTFS aparentemente almacena la codificación con el nombre del archivo, pero UTF-16 es estándar.
Algunas partes de Windows distinguen entre mayúsculas y minúsculas, otras partes no distinguen entre mayúsculas y minúsculas. Es fácil crear nombres de archivo distintos como "Ab" y "ab" en un sistema de archivos NTFS de Windows. Estos nombres se refieren a archivos separados que contienen contenido separado distinto. Sin embargo, aunque el símbolo del sistema de Windows listará felizmente ambos archivos usando dir
, no puede acceder fácilmente o manipular uno de ellos usando comandos como type
. Vea abajo.
Linux, OS-X
/
Creo que en Linux y OS-X solo está prohibido el conjunto ASCII imprimible. Algunos caracteres (como los metacaracteres de shell *?!
) causarán problemas en las líneas de comando y requerirán que el nombre de archivo se cite o se escape correctamente.
Los sistemas de archivos de Linux como ext2, ext3 son independientes del conjunto de caracteres (creo que simplemente lo tratan más o menos como una secuencia de bytes, solo nulos y /
están prohibidos). Esto significa que puede almacenar nombres de archivo en codificación UTF-8. Creo que depende del shell u otra aplicación saber qué codificación usar para convertir correctamente el nombre de archivo para su visualización o procesamiento.
Conclusión
Entonces, probablemente podría usar algo como ✣
(si no fuera tan difícil de escribir)
Case- (in) sensibilidad en Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Tenga en cuenta que no podemos escribir el contenido del segundo archivo, el type
comando de Windows solo devuelve el contenido de Ab. El tercer archivo también sería distinto de aB en Linux.
(Windows 10 NTFS).