Quais são nomes reservados para várias plataformas?
-
02-07-2019 - |
Pergunta
Eu não estou perguntando sobre regras sintáticas gerais de nomes de arquivo. Quero dizer gotchas que saltam do nada e mordê-lo. Por exemplo, tentar nomear um arquivo "COM
Solução
De: http://www.grouplogic.com /knowledge/index.cfm/fuseaction/view_Info/docID/111 .
Os seguintes caracteres são inválidos como nomes de arquivos ou pastas no Windows usando NTFS:.
/
?
<
>
\
:
*
|
"
e qualquer personagem pode escrever com a tecla CtrlAlém do acima caracteres ilegais do
^
acento circunflexo também não é permitido sob sistemas operacionais Windows utilizando o sistema de arquivos FAT.No Windows usando o arquivo de sistema de arquivos FAT e nomes de pastas podem ter até 255 caracteres.
No Windows usando o arquivo de sistema de arquivos NTFS e nomes de pastas podem ter até 256 caracteres.
sob a janela de comprimento de um caminho completo em ambos os sistemas é de 260 caracteres.
Além desses personagens, as seguintes convenções também são ilegais:
- Colocar um espaço no final do nome
- Colocar um ponto final no fim do nome
Os seguintes nomes de arquivo também estão reservados no Windows:
aux
,com1
,com2
,- ...
com9
,lpt1
,lpt2
,- ...
lpt9
,con
,nul
,prn
Outras dicas
A inscrição completa de nomes de arquivos legais e ilegais no Windows: http://msdn.microsoft.com/en-us/library/aa365247.aspx
Como já foi dito, os nomes de dispositivos como COM1 não são possíveis como nomes de arquivos no Windows, porque eles são dispositivos reservados.
No entanto, existe um método de fuga para criar e acessar arquivos com esses nomes reservados, por exemplo, este comando irá redirecionar a saída do comando ver
em um arquivo chamado COM1:
ver > "\\?\C:\Users\username\COM1"
Agora você terá um arquivo chamado COM1 que 99% dos programas não será capaz de abrir, e provavelmente irá congelar se você tentar o acesso.
Aqui está a Microsoft artigo que explica como funciona este "espaço de nome de arquivo". Basicamente, ele informa ao Windows para não fazer qualquer processamento corda no texto e passá-lo direto para o sistema de arquivos. Este truque também pode ser usado para trabalhar com caminhos mais de 260 caracteres.
A Unix pegadinha complicado quando você não sabe:
Os arquivos que começam com - ou - são legais, mas uma dor na bunda para trabalhar, como muitas ferramentas de linha de comando acho que você está fornecendo opções para eles.
Muitas dessas ferramentas têm um marcador especial "-" para sinalizar o fim das opções:
gzip -9vf -- -mydashedfilename
O boost :: filesystem Guia de Portabilidade tem um monte de boas informações.
Bem, para MSDOS / Windows, NUL, PRN, LPT
A menos que você está diretórios especiais tocantes, os únicos nomes ilegais em Linux são '.
' e '..
'. Qualquer outro nome é possível, embora acessando alguns deles a partir do shell requer o uso de sequências de escape.
EDIT: Como Vinko Vrsalovic disse, arquivos começando com '-
' e '--
' são uma dor a partir do shell, uma vez que essas sequências de caracteres são interpretados pela aplicação, não o shell