it-swarm-eu.dev

Quali sono le ragioni tecniche per non utilizzare i caratteri dello spazio nei nomi dei file?

Qualcuno che conosco ha espresso irritazione oggi per quelli di noi che tendono a non usare spazi nei nostri nomi di file, ad es. NamingThingsLikeThis.txt - nonostante la maggior parte dei moderni sistemi operativi supportano spazi nei nomi di file.

Ci sono ragioni tecniche che è ancora comune vedere i nomi dei file senza spazi (appropriati)? In tal caso, quali sono queste ragioni tecniche che evitano o scoraggiano gli spazi nei nomi dei file e in quali circostanze sono rilevanti?

La ragione più ovvia che potrei pensare, e il motivo per cui generalmente la evito, sono le citazioni aggiuntive richieste sulla riga di comando quando si tratta di tali file. Ci sono altri motivi tecnici significativi?

75
Chris W. Rea

I caratteri di spazi bianchi nei nomi di file possono essere un vero dolore reale nel proverbiale in molti contesti sulla riga di comando e negli script, in cui devi fare attenzione per assicurarti che siano debitamente escapati quindi non assomigliare ai separatori dei comandi che sei in esecuzione.

È più sicuro non averli lì, anche se sei sicuro che il file/dir/che mai sarà usato in tale contesto.

Quello e le vecchie abitudini sono dure a morire.

65
David Spillett

Oltre alle altre risposte sulla linea di comando e sulle vecchie abitudini, ci sono anche molti protocolli di rete che richiedono una particolare attenzione quando si gestiscono nomi di file contenenti spazi.

(Se hai mai provato a scaricare "Product List.pdf" da un sito web e hai finito con un file chiamato "Product", sei stato morso da questo, perché il programmatore dall'altra parte non sapeva o non poteva 'capire le regole di quoting per l'intestazione http Content-Disposition.)

30
Stobor

Molte delle ragioni sono storiche. Ciò non significa che oggi non abbiano senso.

Problemi nella portabilità

Quando si nomina un file, potrebbe essere necessario considerare in che modo altri sistemi (file) tratteranno il nome del file. Un carattere nel nome di un file può andare bene per il tuo sistema, ma potrebbe essere un problema per un altro sistema.

Quindi, finché c'era la minima possibilità che si desideri poter accedere facilmente al file da un sistema precedente, si selezionerebbe solo carattere sicuro . Ciò può includere l'avvio in un vecchio sistema di recupero che si è tenuto in giro o il timore che le versioni di Windows recenti siano ancora in qualche modo basate su MS-DOS.

Lunghezza

Un file system può limitare la lunghezza di un file. Questo era ancora più serio durante i giorni in cui MS-DOS era limitato a 8.3 nomi di file . Quindi, tralasciare gli spazi ti ha permesso di inserire personaggi più significativi nel nome.

Diversi altri file system hanno inoltre definito limiti rigorosi sulla lunghezza del loro nome di file. Wikipedia ha una tabella nell'articolo sul confronto tra file system per coloro che vogliono i dettagli.

Personaggi riservati

MS-DOS ha anche definito il carattere dello spazio come un carattere riservato. Ciò è dovuto al fatto che il carattere dello spazio è stato usato per riempimento nella FAT . Inoltre, MS-DOS non ha fornito un sistema di escape in Shell.

Interpretazione della riga di comando

La maggior parte delle linee di comando di cui sono a conoscenza utilizzano il carattere come delimitatore di parametro . Quando si trascura di eseguire correttamente il escape di un nome file, può avere conseguenze disastrose in quanto parti del nome del 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 WikiPedia linkato sopra sottolinea anche l'ambiguità introdotta dalla mancanza di un comando di escape appropriato:

L'ambiguità può essere evitata vietando in primo luogo 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 i programmi che assumono questi parametri come argomenti, racchiudendo un nome con spazi incorporati tra virgolette o usando un carattere di escape prima dello spazio, solitamente una barra rovesciata ('\'). Per esempio

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

è ambiguo (la parte "nome programma" è parte del nome del 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.

Uniform Resource Locators (URL)

Quando si tenta di descrivere la posizione di un file, utilizzando un URL, gli spazi devono essere sfuggiti.

I personaggi possono essere insicuri per una serie di motivi. Il carattere dello spazio non è sicuro perché gli spazi significativi possono scomparire e spazi insignificanti possono essere introdotti quando gli URL vengono trascritti o composti o sottoposti al trattamento di programmi di elaborazione di testi.

Fonte: RFC1738

Quindi, uno spazio deve essere sostituito con un %20. Questo rende la parte del nome del file dell'URL meno leggibile e, quindi, fa in modo che le persone lo evitino in primo luogo.

28
Der Hochstapler

Gli spazi sono codificati o convertiti in %20 nei nomi di file sul Web, il che potrebbe rendere più difficile la gestione delle risorse di un sito.

Avere Image 1.png e Image%201.png è confuso. È invece più semplice usare Image001.png.

Questo rientra nella stessa categoria delle sequenze di escape per la riga di comando.

25
user7012

A volte, gli spazi possono presentare un problema quando si gestiscono dalla riga di comando, o quando si usano vecchi SO, o quando si scrivono programmi che verranno compilati su diversi SO o quando ... ci sono molte ragioni che possono presentare dei problemi, e io non t sento davvero che sia un problema scrivere il file come: file-without-blanks.txt o file_without_blanks txt . Preferisco il dask perché il carattere di sottolineatura a volte può diventare invisibile quando si tratta, ad esempio, di caratteri sottolineati.

Ma soprattutto, è una questione di abitudine della vecchiaia. Quale non ritengo ci siano abbastanza pro ragioni per abbandonare.


Una nota aggiuntiva, forse non correlata, ma tuttavia la metto qui. Le persone che nominano i loro file con spazi di solito non ci pensano molto; quelli che non sanno spesso un po 'del perché è bene evitarli nei nomi dei file.
E, possiamo essere tutti d'accordo, non c'è niente di peggio di un file che è un nome "Caro signore o signora, ti sto scrivendo questa lettera per informarti di yo.doc".

Non solo spazi - la lunghezza del file conta anche per qualcosa, e IMHO, non dovrebbe essere più lungo di, diciamo, 30 caratteri. Anche i nomi di file lunghi con spazi all'interno sono una benedizione quando si registrano CD, DVD e simili che devono essere letti con i vecchi SO e tra Win e * nix.

5
Rook