Forçando o sistema a permitir a inserção de qualquer caractere no nome do arquivo

Forçando o sistema a permitir a inserção de qualquer caractere no nome do arquivo

Fiz uma prova esta semana e uma das perguntas era (com uma resposta correta):

O nome do arquivo pode conter o caractere:

a)\

b)/

c)?

e)!

Eu escolhi c) ?porque parecia bom para mim. Quando cheguei em casa testei na minha máquina (Ubuntu 14.04) e o arquivo foi criado com sucesso. No cálculo pronto, a resposta correta está marcada como d) !.

Eu sabia que o exame era específico para Windows, mas na prova a plataforma não estava especificada.


É claro que os caracteres \e /não são suportados em um nome de arquivo,MASexiste alguma maneira de forçar o sistema operacional a permiti-los?

Seria muito legal provar que até mesmo \personagens /são suportados.

Responder1

Existem dois fatores limitantes ao considerar os caracteres permitidos em um nome de arquivo: restrições relacionadas ao sistema operacional e restrições relacionadas ao sistema de arquivos. Para esta pergunta, assumirei que estamos falando de versões recentes do Linux e do ext4.

O Linux não permite apenas dois caracteres em nomes de arquivos: /, porque é o separador de caminho, e \0(ASCII NUL), porque termina cstrings. Além disso, os nomes especiais .e ..também são reservados pelo sistema de arquivos para uso como links físicos de navegação.

Você pode demonstrar facilmente que os outros caracteres mencionados na sua pergunta são permitidos:

$ touch '\' '?' '!'
$ ls
!  ?  \

informação relacionada