Que motivos técnicos existem para não usar caracteres de espaço em nomes de arquivos?

75

Alguém que eu conheço expressou irritação hoje em relação àqueles de nós que tendem a não usar espaços em nossos nomes de arquivos, por exemplo. NamingThingsLikeThis.txt - apesar dos sistemas operacionais mais modernos suportarem espaços em nomes de arquivos.

Existem razões técnicas que ainda é comum ver nomes de arquivos sem espaços (apropriados)? Em caso afirmativo, quais são essas razões técnicas para que os espaços nos nomes de arquivos sejam evitados ou desencorajados e em que circunstâncias eles são relevantes?

A razão mais óbvia que eu poderia pensar, e por que eu normalmente evito isso, são as citações extras necessárias na linha de comando quando se lida com esses arquivos. Existem outras razões técnicas significativas?

    
por Chris W. Rea 25.08.2009 / 02:25

5 respostas

64

Caracteres em branco em nomes de arquivos podem ser uma dor real no proverbial em muitos contextos na linha de comando, e em scripts, onde você precisa ter cuidado para ter certeza de que eles estão escapando adequadamente, então não pareça separadores para o comandos que você está executando.

É mais seguro não tê-los lá, mesmo se você tiver certeza de que o arquivo / dir / what-ever nunca será usado em tal contexto.

Isso e velhos hábitos são difíceis de morrer.

    
por 25.08.2009 / 02:39
30

Além das outras respostas sobre linha de comando e hábitos antigos, há também muitos protocolos de rede que exigem cuidados especiais ao lidar com nomes de arquivos contendo espaços.

(Se você já tentou baixar "Product List.pdf" de um site, e acabou com um arquivo chamado "Product", você foi mordido por isso, porque o programador do outro lado não sabe ou não conseguiu descobrir as regras de cotação para o cabeçalho Content-Disposition http.)

    
por 25.08.2009 / 03:01
28

Muitas das razões são históricas. Isso não significa que eles não façam sentido hoje.

Problemas na portabilidade

Ao nomear um arquivo, você também pode considerar como outros sistemas (de arquivo) tratarão esse nome de arquivo. Um caractere em um nome de arquivo pode ser bom para o seu sistema, mas pode ser um problema para outro sistema.

Assim, desde que houvesse a menor possibilidade de você poder acessar o arquivo facilmente de um sistema antigo, você escolheria apenas o caractere seguro . Isso pode incluir a inicialização em um antigo sistema de recuperação mantido por você ou o medo de que versões recentes do Windows ainda sejam de alguma forma baseadas no MS-DOS.

Comprimento

Um sistema de arquivos pode limitar o tamanho que um arquivo pode ter. Isso foi ainda mais sério durante os dias em que o MS-DOS estava limitado a 8.3 nomes de arquivos . Assim, deixar de fora os espaços permitiu que você colocasse caracteres mais significativos no nome.

Vários outros sistemas de arquivos também definiram limites estritos em seu comprimento de nome de arquivo. A Wikipedia tem uma tabela no artigo sobre comparação de sistemas de arquivos para aqueles que querem os detalhes.

Caracteres Reservados

O MS-DOS também definiu o caractere de espaço como um caractere reservado. Isso se deve ao fato de que o caractere de espaço foi usado para o preenchimento no FAT . Além disso, o MS-DOS não fornecia um sistema de escape no shell.

Interpretação de linha de comando

A maioria das linhas de comando que conheço usa o caractere de espaço como um delimitador de parâmetro . Ao deixar de escapar corretamente de um nome de arquivo, isso pode ter consequências desastrosas, já que partes do nome do arquivo podem ser interpretadas como parâmetros para o aplicativo que você deseja chamar.

Considere a diferença entre

rm foo bar

e

rm "foo bar"

O artigo da WikiPedia vinculado acima também aponta a ambiguidade introduzida pela falta de um escape para um comando:

Ambiguity can be prevented either by prohibiting embedded spaces in file- and directory names in the first place (for example, by substituting them with underscores '_'), or, if supported by the command-line interpreter and the programs taking these parameters as arguments, by enclosing a name with embedded spaces between quote characters or using a escape character before the space, usually a backslash ('\'). For example

Long path/Long program name Parameter one Parameter two ...

is ambiguous (is "program name" part of the program name, or two parameters?); however

Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...

and Long\ path/Long\ program\ name Parameter\ one Parameter\ two ...

are not ambiguous.

Localizadores uniformes de recursos (URL)

Ao tentar descrever a localização de um arquivo, usando uma URL, os espaços precisam ser escapados.

Characters can be unsafe for a number of reasons. The space character is unsafe because significant spaces may disappear and insignificant spaces may be introduced when URLs are transcribed or typeset or subjected to the treatment of word-processing programs.

Fonte: RFC1738

Assim, um espaço deve ser substituído por um %20 . Isso torna a parte do nome do arquivo da URL menos legível e, assim, faz com que as pessoas a evitem em primeiro lugar.

    
por 06.10.2012 / 15:05
25

Os espaços são codificados ou convertidos em %20 em nomes de arquivos na Web, o que pode dificultar o gerenciamento dos ativos de um site.

Ter Image 1.png e Image%201.png é confuso. É mais fácil usar Image001.png .

Isso realmente se enquadra na mesma categoria que as seqüências de escape para a linha de comando.

    
por 25.08.2009 / 04:30
5

Às vezes, os espaços podem apresentar um problema ao lidar com a linha de comando, ou ao usar sistemas operacionais mais antigos, ou ao escrever programas que serão compilados em diferentes sistemas operacionais, ou quando ... há muitas razões que podem apresentar problemas e Eu realmente não sinto que é um problema para escrever o arquivo como: file-without-blanks.txt ou file_without_blanks.txt . Eu prefiro o dask porque o sublinhado às vezes pode se tornar invisível quando se lida com, por exemplo, fonte sublinhada.

Mas principalmente, é uma questão de hábito desde a velhice. Que eu não sinto que há motivos suficientes para abandonar.

Uma nota adicional, possivelmente não relacionada, mas mesmo assim eu colocarei aqui. As pessoas que nomeiam seus arquivos com espaços geralmente não pensam muito sobre isso; aqueles que nem sempre sabem um pouco do porquê é bom evitá-los em nomes de arquivos.
E, todos nós podemos concordar, não há nada pior do que um arquivo que é nomes "Caro senhor ou senhora, eu estou escrevendo esta carta para informá-lo de yo.doc".

Não apenas espaços - a duração do arquivo também conta para algo, e IMHO, não deve ser maior que, digamos, 30 caracteres. Para nomes de arquivos longos com espaços dentro também são uma bênção ao gravar CDs, DVDs e outros que precisam ser lidos em sistemas operacionais mais antigos, e entre as plataformas Win e * nix.

    
por 25.08.2009 / 02:50