Quais caracteres são permitidos e quais devem ser escapados na linha de comando em diferentes sistemas operacionais?
Quais caracteres são permitidos e quais devem ser escapados na linha de comando em diferentes sistemas operacionais?
Respostas:
Há uma discussão sobre os caracteres do nome do arquivo no artigo da Wikipedia sobre Nomes de arquivos .
Você pode encontrar este ensaio informativo: Corrigindo nomes de arquivos Unix / Linux / POSIX .
Este artigo compara o OS X e o Windows XP: X vs. XP: caracteres proibidos nos nomes de arquivos (PDF, consulte as páginas aproximadamente 64-66).
Coisas que não devem constar em nomes de arquivos por US $ 1.000
Não sei quais caracteres devem ter escape sem escape, mas no Linux, provavelmente não é uma boa ideia escapar dos caracteres que podem ter um significado especial, como "n" (nova linha), "t" (guia) e outros, mas isso geralmente não é um problema nas operações de arquivo. Talvez você queira dizer "escapou" ao invés de "escapou". Os mais comuns são aqueles que o shell interpretará, como espaço, ">", "<" etc. Veja alguns dos artigos que eu vinculei para uma discussão sobre eles.
Os únicos caracteres não permitidos em um nome de arquivo em * nix são NUL
e /
. No Windows, única NUL
, :
e \
são realmente não é permitido, mas muitos aplicativos restringir que mais, também impedindo ?
, *
, +
, e %
.
Em nenhum momento, nenhum caractere em um nome de arquivo precisa ser escapado, exceto conforme necessário, a fim de não ser interpretado pelo shell.
Se você criar um arquivo no Windows com o Explorer usando um dos seguintes caracteres, ele reclamará que os caracteres não são permitidos:
\ / : * ? " < > |
Uma boa referência está aqui:
Nomeando arquivos, caminhos e espaços para nome
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
A Microsoft declara ainda:
"... nas plataformas de desktop baseadas no Windows, os caracteres de caminho inválidos podem incluir caracteres ASCII / Unicode 1 a 31, além de aspas ("), menores que (<), maiores que (>), pipe (|), backspace (\ b), nulo (\ 0) e tabulação (\ t). "
http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx
\ / : * ? " < > |
todos eles e criá-los com o mkdir no meu sistema GNU / Linux. Você pode usar mkdir '?'
para criar o ?
diretório também. Eu usei o sistema de arquivos ramdisk e XFS para testar isso.
No Linux e em outros sistemas compatíveis com POSIX, "/" é reservado, pois é o separador de diretório e "\ 0" (o caractere NULL) designa o final da sequência. Tudo o resto é permitido.