Obligar al sistema a permitirme insertar cualquier carácter en el nombre del archivo

Obligar al sistema a permitirme insertar cualquier carácter en el nombre del archivo

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
!  ?  \

información relacionada