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