Perché Windows utilizza le barre rovesciate per i percorsi e le barre in avanti di Unix?


Risposte:


98

Unix è stato introdotto /come separatore di directory intorno al 1970. Non so perché sia ​​stato scelto esattamente questo personaggio; il sistema antenato usato da Multics >, ma i progettisti di Unix lo avevano già usato >insieme <per il reindirizzamento nella shell (vedi Perché la directory principale è indicata da un /segno? ).

MS-DOS 2.0 è stato introdotto \come separatore di directory nei primi anni '80. Il motivo /non è stato utilizzato è che MS-DOS 1.0 (che non supportava affatto le directory) stava già utilizzando /per introdurre le opzioni della riga di comando. Ha preso questo uso /da CP / M , che lo ha preso da VMS . Puoi leggere una spiegazione più approfondita del motivo per cui quella scelta è stata fatta sul blog di Larry Osterman (MS-DOS aveva anche brevemente un'opzione per cambiare il carattere dell'opzione in -e il separatore di directory in /, ma non si attaccava).

/è riconosciuto dalla maggior parte delle API a livello di programmatore (in tutte le versioni di DOS e Windows). Quindi puoi spesso, ma non sempre cavartela, usando /come separatore di directory in Windows. Un'eccezione notevole è che non puoi usare /come separatore dopo il \\?prefisso che (anche in Windows 7) è l'unico modo per specificare un percorso usando Unicode o contenente più di 260 caratteri.

Alcuni elementi dell'interfaccia utente supportano /come separatore di directory in Windows, ma non tutti. Alcuni programmi passano semplicemente i nomi dei file all'API sottostante, quindi supportano /e \indifferentemente. Nell'interprete dei comandi (in command.como cmd), è possibile utilizzare /in molti casi, ma non sempre; questo dipende in parte dalla versione di Windows (ad esempio, cd /windowsfunziona in XP e 7 ma non in Windows 9x). La casella di immissione del percorso Explorer accetta /(almeno da XP in su; probabilmente perché accetta anche URL). D'altra parte, la finestra di dialogo di apertura del file standard rifiuta le barre .


2
/viene riconosciuto come separatore di directory dalla riga di comando MS-DOS o Windows.
Tamara Wijsman,

1
"C: \ Windows \ System32> cd / windows / system" funziona.
Andrew J. Brehm,

@TomWij: hai un riferimento su dove /è accettato esattamente sulla riga di comando? Ad esempio, cosa fa dir /p? e dir c:/p? e c:/windows/notepad.exe? e start /windows/notepad.exe? ecc. (Non ho una macchina Windows qui per testare.)
Gilles

2
/è stato probabilmente usato come separatore di directory in UNIX perché era un tasto facile (non spostato) per colpire su un tipo di telefono. I personaggi speciali non cambiati erano : - ; , . /.
Daniel R Hicks,

2
È interessante notare che di recente ho analizzato fonti e manuali DOS 1 e 2 e ho scoperto che Microsoft utilizzava /(e -per switch) come Xenix e ispirato a Xenix, ma IBM rilasciava prima che Microsoft venisse spedita agli OEM e IBM utilizzava ` (and / `per switch) e hanno cambiato il prompt da A:in A>così hanno cambiato la documentazione predefinita e spedita con errori (ancora assumendo // -) più una nota che è stata cambiata e perché.
mirabilos,

9

L' API di Windows sottostante può accettare la barra rovesciata o la barra per separare i componenti di directory e file di un percorso, ma la convenzione di Microsoft prevede l'utilizzo di una barra rovesciata e le API che restituiscono i percorsi inseriscono la barra rovesciata.

MS-DOS 2.0 ha copiato il file system gerarchico da Unix e quindi ha utilizzato la barra, ma (possibilmente su insistenza di IBM ) ha aggiunto la barra rovesciata per consentire la digitazione dei percorsi nella shell dei comandi mantenendo la compatibilità con MS-DOS 1.0 e CP / M in cui la barra era l'indicatore dell'opzione della riga di comando.

Confrontare

dir/w

che mostra la directory corrente in grande formato rispetto a

dir\w

che esegue il wfile nel direttore dir.

Riferimenti:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.