
Tuve un examen esta semana y una de las preguntas era (con una respuesta correcta):
El nombre del archivo puede contener el carácter:
a)
\
b)
/
C)
?
d)
!
Elegí c) ?
porque me parecía bien. Cuando llegué a casa lo probé en mi máquina (Ubuntu 14.04) y el archivo se creó correctamente. En el calculador listo, la respuesta correcta está marcada como d) !
.
Sabía que el examen era específico de Windows, pero en el examen no se especificaba la plataforma.
Está claro que los caracteres \
y /
no son compatibles con un nombre de archivo,PERO¿Hay alguna forma de obligar al sistema operativo a permitirlos?
Sería genial demostrar que incluso los personajes \
y /
son compatibles.
Respuesta1
Hay dos factores limitantes al considerar los caracteres permitidos en un nombre de archivo: restricciones relacionadas con el sistema operativo y restricciones relacionadas con el sistema de archivos. Para esta pregunta asumiré que estamos hablando de versiones recientes de Linux y ext4.
Linux solo no permite dos caracteres en los nombres de archivos: /
, porque es el separador de ruta, y \0
(ASCII NUL), porque termina cstrings. Además de esto, los nombres especiales .
y ..
también están reservados por el sistema de archivos para su uso como enlaces físicos de navegación.
Puede demostrar fácilmente que los otros caracteres mencionados en su pregunta están permitidos:
$ touch '\' '?' '!'
$ ls
! ? \