¿Qué razones técnicas existen para no usar caracteres de espacio en los nombres de archivo?

75

Alguien que conozco expresó su irritación hoy con respecto a aquellos de nosotros que tendemos a no usar espacios en nuestros nombres de archivos, por ejemplo NamingThingsLikeThis.txt, a pesar de la mayoría de los sistemas operativos modernos que admiten espacios en los nombres de archivos.

¿Hay razones técnicas por las que todavía es común ver nombres de archivos sin espacios (apropiados)? Si es así, ¿cuáles son estas razones técnicas por las que se evitan o desalientan los espacios en los nombres de archivo, y en qué circunstancias son relevantes?

La razón más obvia en la que puedo pensar, y por qué normalmente la evito, son las comillas adicionales que se requieren en la línea de comando cuando se trata de dichos archivos. ¿Hay alguna otra razón técnica importante?

Chris W. Rea
fuente
Como dijiste, son mucho más fáciles de manejar en la línea de comando. Y para la programación es que no estoy seguro de si es posible o factible usar espacios en los nombres de archivo.
Alvin Row

Respuestas:

66

Los caracteres de espacios en blanco en los nombres de archivo pueden ser un verdadero dolor real en el proverbial en muchos contextos en la línea de comandos y en los scripts, donde debe tener cuidado para asegurarse de que se escapen correctamente, por lo que no se ve como separadores de los comandos que está corriendo.

Es más seguro no tenerlos allí, incluso si está seguro de que el archivo / dir / lo que sea nunca se usará en ese contexto.

Eso y los viejos hábitos tardan en morir.

David Spillett
fuente
También son un verdadero dolor real con el que lidiar, luego debes componer caminos y modificarlos. Asegurarse de que los componentes no estén entre comillas ni escapes para su modificación antes de volver a escapar / volver a citar, especialmente si las piezas se envían a otros bits de código para ser manipulados.
Afrazier
2
Si cree que los espacios son malos, intente tratar con archivos con líneas nuevas ( '\n') en sus nombres. (Los sistemas tipo Unix realmente permiten esto; Windows generalmente, o al menos lo dificulta).
Keith Thompson,
31

Además de las otras respuestas sobre la línea de comandos y los viejos hábitos, también hay muchos protocolos de red que requieren un cuidado especial cuando se trata de nombres de archivos que contienen espacios.

(Si alguna vez intentó descargar "Product List.pdf" de un sitio web y terminó con un archivo llamado "Producto", esto lo mordió porque el programador del otro lado no sabía o no podía no descubra las reglas de cotización para el encabezado http Content-Disposition).

Stobor
fuente
11
+1. HTTP para empezar. Los espacios en las URL (para cualquier protocolo, no solo HTTP) deben escaparse a% 20 o +. La confusión puede surgir cuando no están codificados como deberían ser. Para las páginas web hay una razón visual para evitar ambos espacios y el guión bajo ("_") comúnmente usado para reemplazarlos: ambos pueden verse iguales en un enlace subrayado, por lo que alguien que copie el enlace manualmente o lo lea a alguien puede obtener está mal.
David Spillett el
55
Una de las cosas más molestas sobre los espacios que deben codificarse en las URL es la tendencia de que cierto software termine manteniendo los espacios codificados ...
SamB
¿Es esto real? En 2018 esto sucede?
Chris Calo
@ChrisCalo Puede notar que esta respuesta se dio en 2009, no en 2018. Pero sí, esto todavía sucede en 2018. Posiblemente con menos frecuencia, ahora que la mayoría de los desarrolladores novatos usan marcos para crear sitios web en lugar de hacer todo desde cero, pero aún así un problema.
Stobor
28

Muchas de las razones son históricas. Eso no significa que no tengan sentido hoy.

Problemas de portabilidad

Al nombrar un archivo, es posible que también deba considerar cómo otros sistemas (de archivos) tratarán ese nombre de archivo. Un carácter en un nombre de archivo puede estar bien para su sistema, pero puede ser un problema para otro sistema.

Por lo tanto, siempre que haya la más mínima posibilidad de que desee acceder fácilmente al archivo desde un sistema anterior, solo elegiría un carácter seguro . Esto puede incluir arrancar en un antiguo sistema de recuperación que mantuvo o el temor de que las versiones recientes de Windows todavía estén basadas de alguna manera en MS-DOS.

Longitud

Un sistema de archivos puede limitar la longitud que puede tener un archivo. Esto fue aún más grave durante los días en que MS-DOS se limitaba a 8.3 nombres de archivo . Por lo tanto, omitir espacios le permitió poner caracteres más significativos en el nombre.

Varios otros sistemas de archivos también definieron límites estrictos en la longitud de su nombre de archivo. Wikipedia tiene una tabla en el artículo sobre la comparación del sistema de archivos para aquellos que quieren los detalles.

Personajes reservados

MS-DOS también definió el carácter de espacio como un carácter reservado. Esto se debe al hecho de que el carácter de espacio se utilizó para rellenar en el FAT . Además, MS-DOS no proporcionó un sistema de escape en el shell.

Interpretación de línea de comando

La mayoría de las líneas de comando que conozco utilizan el carácter de espacio como delimitador de parámetros . Al descuidar escapar correctamente de un nombre de archivo, puede tener consecuencias nefastas, ya que partes del nombre de archivo pueden interpretarse como parámetros para la aplicación que desea llamar.

Considere la diferencia entre

rm foo bar

y

rm "foo bar"

El artículo de WikiPedia vinculado anteriormente incluso señala la ambigüedad introducida por faltar para escapar correctamente de un comando:

La ambigüedad puede evitarse prohibiendo los espacios incrustados en los nombres de archivo y directorio en primer lugar (por ejemplo, sustituyéndolos con guiones bajos '_') o, si el intérprete de línea de comandos y los programas lo toman como argumentos, encerrando un nombre con espacios incrustados entre comillas o usando un carácter de escape antes del espacio, generalmente una barra invertida ('\'). Por ejemplo

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

es ambiguo (¿es "nombre del programa" parte del nombre del programa, o dos parámetros?); sin embargo

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

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

No son ambiguos.

Localizadores uniformes de recursos (URL)

Cuando se trata de describir la ubicación de un archivo, usando una URL, se deben escapar espacios.

Los personajes pueden ser inseguros por varias razones. El carácter de espacio no es seguro porque pueden desaparecer espacios significativos y pueden introducirse espacios insignificantes cuando las URL se transcriben o se componen o se someten al tratamiento de programas de procesamiento de texto.

Fuente: RFC1738

Por lo tanto, un espacio tiene que ser reemplazado por un %20lugar. Esto hace que la parte del nombre de archivo de la URL sea menos legible y, por lo tanto, hace que las personas lo eviten en primer lugar.

Der Hochstapler
fuente
25

Los espacios se codifican o se convierten %20en nombres de archivos en la web, lo que puede dificultar la administración de los activos de un sitio.

Tener Image 1.pngy Image%201.pnges confuso. Es más fácil de usar Image001.pngen su lugar.

Esto realmente cae en la misma categoría que las secuencias de escape para la línea de comandos.

usuario7012
fuente
5

A veces, los espacios pueden presentar un problema cuando se trabaja en la línea de comandos, o cuando se usan sistemas operativos más antiguos, o al escribir programas que se compilarán en diferentes sistemas operativos, o cuando ... hay muchas razones que pueden presentar problemas, y no lo hago ' Realmente siento que es un problema escribir el archivo como: file-without-blanks.txt o file_without_blanks.txt . Prefiero el guión porque el guión bajo a veces puede volverse invisible cuando se trata, por ejemplo, de una fuente subrayada.

Pero sobre todo, es una cuestión de costumbre de la vejez. Lo cual no me siento que hay suficientes pro razones para abandonar.


Una nota adicional, posiblemente no relacionada, pero sin embargo la pondré aquí. Las personas que nombran sus archivos con espacios generalmente no piensan mucho en eso; los que a menudo no saben un poco por qué es bueno evitarlos en los nombres de archivo.
Y, todos podemos estar de acuerdo, no hay nada peor que un archivo con el nombre "Estimado señor o señora, le escribo esta carta para informarle de yo.doc".

No solo espacios: la longitud del archivo también cuenta para algo, y en mi humilde opinión, no debería ser más largo que, digamos, 30 caracteres. Los nombres largos de archivos con espacios en el interior también son una bendición cuando se graban CD, DVD y otros que deben leerse en sistemas operativos más antiguos y entre las plataformas Win y * nix.

Torre
fuente
2
Usuarios de Lazy Word ...
SamB