Mi dà fastidio aver usato Unix al college e ora lavorando sul lato Windows. Qual è la storia dietro questa decisione? Qualcuno sa perché ha funzionato in questo modo?
Mi dà fastidio aver usato Unix al college e ora lavorando sul lato Windows. Qual è la storia dietro questa decisione? Qualcuno sa perché ha funzionato in questo modo?
Risposte:
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.com
o cmd
), è possibile utilizzare /
in molti casi, ma non sempre; questo dipende in parte dalla versione di Windows (ad esempio, cd /windows
funziona 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 .
/
viene riconosciuto come separatore di directory dalla riga di comando MS-DOS o Windows.
/
è 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.)
/
è 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 : - ; , . /
.
/
(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é.
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 w
file nel direttore dir
.
Riferimenti: