it-swarm.dev

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

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

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

La razón más obvia que se me ocurre, y la razón por la que normalmente lo evito, son las citas adicionales que se requieren en la línea de comandos cuando se trata de dichos archivos. ¿Existen otras razones técnicas significativas?

75
Chris W. Rea

Los caracteres de espacio en blanco en los nombres de archivo pueden ser un verdadero dolor real en el proverbio 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 parecen a los separadores de los comandos que está usando. corriendo.

Es más seguro no tenerlos allí, incluso si está seguro de que nunca se va a utilizar el archivo/dir/what-ever en ese contexto.

Eso, y los viejos hábitos mueren duro.

65
David Spillett

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 ha intentado descargar "Lista de productos.pdf" de un sitio web y terminó con un archivo llamado "Producto", esto lo mordió, porque el programador en el otro extremo no sabía o no pudo No calcule las reglas de cotización para el encabezado de disposición de contenido http.

30
Stobor

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

Problemas en la portabilidad

Al nombrar un archivo, es posible que también deba considerar cómo otros sistemas (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 exista la mínima posibilidad de que desee poder acceder al archivo fácilmente desde un sistema anterior, debe seleccionar solo el carácter seguro . Esto puede incluir el inicio en un sistema de recuperación antiguo que mantuviste cerca 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 limitó a 8.3 nombres de archivos . 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 desean 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 usó para el relleno en el FAT . Además, MS-DOS no proporcionó un sistema de escape en el Shell.

Interpretación de línea de comandos

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

Considera la diferencia entre

rm foo bar

y

rm "foo bar"

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

La ambigüedad se puede evitar ya sea prohibiendo los espacios incrustados en los nombres de archivos y directorios (por ejemplo, sustituyéndolos con guiones bajos '_'), o, si lo admite el intérprete de línea de comandos y los programas que toman estos parámetros como argumentos, al encerrar un nombre con espacios incrustados entre caracteres de comillas o usar 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 de recursos uniformes (URL)

Al tratar de describir la ubicación de un archivo, utilizando una URL, los espacios deben escaparse.

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

Fuente: RFC1738

Por lo tanto, un espacio debe reemplazarse con un %20 en su lugar. Esto hace que el nombre del archivo de la URL sea menos legible y, por lo tanto, hace que las personas lo eviten en primer lugar.

28
Der Hochstapler

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

Tener Image 1.png y Image%201.png es confuso. Es más fácil usar Image001.png en su lugar.

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

25
user7012

A veces, los espacios pueden presentar un problema cuando se manejan en la línea de comando, o cuando se usan sistemas operativos más antiguos, o cuando se escriben programas que se compilarán en sistemas operativos diferentes, 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 dask porque el subrayado a veces puede volverse invisible cuando se trata, por ejemplo, con una fuente subrayada.

Pero sobre todo, es una cuestión de hábito de la vejez. Que no creo que haya 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 no suelen saber 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 los nombres "Estimado señor o señora, le escribo esta carta para informarle sobre yo.doc".

No solo espacios: la longitud del archivo también cuenta para algo, y en mi humilde opinión, no debe ser más larga 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 los que necesitan ser leídos en sistemas operativos más antiguos, y entre las plataformas Win y * nix.

5
Rook