Molte delle ragioni sono storiche. Ciò non significa che non abbiano senso oggi.
Problemi di portabilità
Quando si assegna un nome a un file, potrebbe anche essere necessario considerare il modo in cui altri sistemi (file) tratteranno tale nome file. Un carattere con un nome file può andare bene per il tuo sistema, ma potrebbe essere un problema per un altro sistema.
Quindi, fintanto che esiste la minima possibilità che tu possa voler accedere facilmente al file da un sistema precedente, sceglieresti solo un carattere sicuro . Ciò può includere l'avvio in un vecchio sistema di recupero che hai tenuto in giro o il timore che le recenti versioni di Windows siano ancora in qualche modo basate su MS-DOS.
Lunghezza
Un file system può limitare la lunghezza che può avere un file. Ciò era ancora più grave nei giorni in cui MS-DOS era limitato a 8,3 nomi di file . Quindi, tralasciando gli spazi ti ha permesso di inserire nel nome caratteri più significativi.
Numerosi altri file system hanno anche definito limiti rigorosi per la lunghezza dei nomi dei file. Wikipedia ha una tabella nell'articolo sul confronto dei file system per coloro che vogliono i dettagli.
Personaggi riservati
MS-DOS ha inoltre definito il carattere spazio come carattere riservato. Ciò è dovuto al fatto che il carattere spazio è stato utilizzato per il riempimento nel FAT . Inoltre, MS-DOS non prevedeva un sistema di escape nella shell.
Interpretazione da riga di comando
La maggior parte delle righe di comando che conosco usano il carattere spazio come delimitatore di parametri . Quando si trascura di sfuggire correttamente a un nome file, può avere conseguenze disastrose poiché parti del nome file possono essere interpretate come parametri dell'applicazione che si desidera chiamare.
Considera la differenza tra
rm foo bar
e
rm "foo bar"
L'articolo di WikiPedia linkato sopra sottolinea anche l'ambiguità introdotta dalla mancanza per sfuggire correttamente a un comando:
L'ambiguità può essere prevenuta vietando innanzitutto gli spazi incorporati nei nomi di file e directory (ad esempio sostituendoli con caratteri di sottolineatura '_') oppure, se supportati dall'interprete della riga di comando e dai programmi che prendono questi parametri come argomenti, racchiudendo un nome con spazi incorporati tra caratteri di citazione o utilizzando un carattere di escape prima dello spazio, di solito una barra rovesciata ('\'). Per esempio
Long path/Long program name Parameter one Parameter two ...
è ambiguo ("nome programma" fa parte del nome programma o due parametri?); però
Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...
e lungo \ percorso / lungo \ programma \ nome parametro \ un parametro \ due ...
non sono ambigui.
Localizzatori di risorse uniformi (URL)
Quando si tenta di descrivere la posizione di un file, utilizzando un URL, è necessario uscire dagli spazi.
I personaggi possono non essere sicuri per una serie di motivi. Il carattere spaziale non è sicuro perché possono scomparire spazi significativi e possono essere introdotti spazi insignificanti quando gli URL vengono trascritti o composti o sottoposti al trattamento di programmi di elaborazione testi.
Fonte: RFC1738
Pertanto, uno spazio deve essere sostituito con un %20
invece. Ciò rende meno leggibile il nome del file dell'URL e, di conseguenza, le persone lo evitano in primo luogo.