nomes de arquivos Linux / Windows / Unix /…: Quais caracteres são permitidos? Quais são sem escape?

39

Quais caracteres são permitidos e quais deles devem ser escapados na linha de comando em diferentes sistemas operacionais?

    
por java.is.for.desktop 12.06.2010 / 21:24

4 respostas

26

Há uma discussão sobre caracteres de nomes de arquivos no artigo da Wikipédia sobre Nomes de arquivos .

Você pode encontrar este ensaio informativo: Corrigindo nomes de arquivo Unix / Linux / POSIX .

Este artigo compara o OS X e o Windows XP: X vs. XP: Caracteres Proibidos em Nomes de Arquivo (PDF, veja pp aprox. 64-66).

Coisas que não deveriam ser em nomes de arquivos por $ 1.000 Alex

Eu não sei quais caracteres devem ser un -escapados, mas no Linux, provavelmente não é uma boa idéia escapar dos caracteres que podem ter um significado especial como "n" (nova linha) , "t" (tab) e outros, mas isso geralmente não é um problema nas operações de arquivos. Talvez você queira dizer "escapou" em vez de "sem escape". Os mais comuns são aqueles que o shell irá interpretar como espaço, ">", "<", etc. Veja alguns dos artigos que eu relacionei para uma discussão sobre eles.

    
por 12.06.2010 / 22:29
24

Os únicos caracteres não permitidos em um nome de arquivo em * nix são NUL e / . No Windows, apenas NUL , : e \ não são permitidos, mas muitos aplicativos restringem isso ainda mais, evitando também ? , * , + e % .

Em nenhum momento, qualquer caractere em um nome de arquivo precisa ser salvo, exceto quando necessário, para não ser interpretado pelo shell.

    
por 12.06.2010 / 22:27
12

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 namespaces
link

A Microsoft afirma ainda:

"... em plataformas de desktop baseadas no Windows, caracteres de caminho inválidos podem incluir caracteres ASCII / Unicode 1 a 31, bem como aspas ("), menores que (<), maiores que (>) (|), backspace (\ b), null (\ 0) e tabulação (\ t). "

link

    
por 12.06.2010 / 23:08
4

No Linux e em outros sistemas compatíveis com POSIX, "/" é reservado como o separador de diretório e "\ 0" (o caractere NULL) designa o final da string. Tudo o mais é permitido.

    
por 12.06.2010 / 22:27