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 %20
lugar. 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.