Forçando o sistema a permitir que eu insira qualquer caractere no nome do arquivo

1

Eu fiz um exame esta semana e uma das perguntas foi (com uma resposta correta):

The file name can contain the character:

a) \

b) /

c) ?

d) !

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

Eu sabia que o exame era específico do Windows, mas no papel de teste a plataforma não foi especificada.

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

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

    
por Ionică Bizău 19.06.2014 / 09:51

1 resposta

5

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 essa questão, presumo que estamos falando de versões recentes do Linux e do ext4.

O Linux apenas não permite dois caracteres em nomes de arquivos: / , porque é o separador de caminho e . (ASCII NUL), porque termina os cstrings. Além disso, os nomes especiais .. e %code% 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 personagens mencionados na sua pergunta são permitidos:

$ touch '\' '?' '!'
$ ls
!  ?  \
    
por 19.06.2014 / 09:57