Caracteres reservados em nomes de arquivos

1

Tive a impressão de que o único caractere não permitido em nomes de arquivos era / , mas parece que não consigo criar um arquivo cujo nome contenha caracteres como * , \ , " , : , | , < ou > . Por exemplo,

$ echo "*"
> *
$ touch "*"
> touch: setting times of '*': No such file or directory

Estou escrevendo um script de shell que requer que o usuário digite um nome de arquivo e gostaria de ter certeza de que o nome não possui nenhum caractere inválido. Existe uma lista em algum lugar?

Atualização:

Eu não sabia que estava fazendo isso em um sistema de arquivos FAT32 (stick USB), que não permite '*' e outros caracteres em nomes de arquivos. Não admira que não funcionou. Desculpe, meu mau !!

    
por Ernest A C 01.10.2012 / 01:38

2 respostas

4

Tenho certeza de que os únicos bytes reservados são 0 (ASCII Nul) e 0x2f (ASCII '/', barra invertida).

Você pode facilmente criar um arquivo com '.', '\' e outras coisas interessantes nele. Pense em "nomes de arquivos unicode", que contêm todos os tipos de valores de bytes estranhos.

Naturalmente, não é possível ter nomes de arquivos duplicados no mesmo diretório, portanto, os arquivos denominados "." e ".." geralmente não pode ser feito por um mero usuário: a parte do sistema de arquivos do kernel os cria quando um diretório é criado.

Observe também que a maioria dos sistemas de arquivos tem um limite no comprimento de um nome de arquivo, e você não pode criar um arquivo cujo nome é a string vazia.

    
por 01.10.2012 / 03:43
0

Bem, na verdade você poderia, apenas fazer uma citação única,

por exemplo, touch '*'

Ou use o seu FM:

Paramaisdetalhes,consulteoReservedcharactersandwords nesta página , pelo menos / \ . .. não são permitidos

    
por 01.10.2012 / 01:58