Dlaczego system Windows używa ukośników odwrotnych do ścieżek i ukośników do przodu?

Odpowiedzi:

98

Unix został wprowadzony /jako separator katalogów około 1970 roku. Nie wiem, dlaczego dokładnie ten znak został wybrany; używał systemu przodków Multics >, ale projektanci Unixa używali go już >razem z <przekierowaniem w powłoce (zobacz Dlaczego katalog główny jest oznaczony /znakiem? ).

MS-DOS 2.0 wprowadzony \jako separator katalogów na początku lat 80. /Nie użyto powodu, że MS-DOS 1.0 (który wcale nie obsługiwał katalogów) już używał /do wprowadzenia opcji wiersza poleceń. Wziął to użycie /z CP / M , który wziął go z VMS . Dokładniejsze wyjaśnienie, dlaczego dokonano tego wyboru, można przeczytać na blogu Larry'ego Ostermana (MS-DOS miał nawet na krótko opcję zmiany znaku opcji na -i separatora katalogów na /, ale się nie trzymał).

/jest rozpoznawany przez większość interfejsów API na poziomie programisty (we wszystkich wersjach DOS i Windows). Możesz więc często, ale nie zawsze, uciec od używania /jako separatora katalogów w systemie Windows. Godnym uwagi wyjątkiem jest to, że nie można użyć /jako separatora po \\?prefiksie, który (nawet w systemie Windows 7) jest jedynym sposobem na określenie ścieżki przy użyciu Unicode lub zawierającej więcej niż 260 znaków.

Niektóre elementy interfejsu użytkownika obsługują /jako separator katalogów w systemie Windows, ale nie wszystkie. Niektóre programy po prostu przekazują nazwy plików do bazowego interfejsu API, więc obsługują /i są \obojętne. W interpretatorze poleceń (w command.comlub cmd) możesz używać /w wielu przypadkach, ale nie zawsze; jest to częściowo zależne od wersji systemu Windows (na przykład cd /windowsdziała w XP i 7, ale nie w Windows 9x). Pole wprowadzania ścieżki Eksploratora akceptuje /(przynajmniej od XP; prawdopodobnie dlatego, że akceptuje również adresy URL). Z drugiej strony standardowe okno dialogowe otwierania pliku odrzuca ukośniki .

Gilles
źródło
2
/jest rozpoznawany jako separator katalogów przez wiersz poleceń MS-DOS lub Windows.
Tamara Wijsman,
1
Działa „C: \ Windows \ System32> cd / windows / system”.
Andrew J. Brehm
@TomWij: Czy masz odniesienie do tego, gdzie dokładnie /jest akceptowane w wierszu poleceń? Na przykład, co robi dir /p? i dir c:/p? i c:/windows/notepad.exe? i start /windows/notepad.exe? itp. (Nie mam tutaj komputera z systemem Windows do testowania).
Gilles
2
/był prawdopodobnie używany jako separator katalogów w systemie UNIX, ponieważ był to łatwy (niezmieniony) klucz do wykreślenia typu Teletype. Nieprzetworzone znaki specjalne były : - ; , . /.
Daniel R Hicks
2
Co ciekawe, ostatnio przekopałem się przez źródła DOS 1 i 2 oraz podręczniki i dowiedziałem się, że Microsoft używał /(i -dla przełączników) takich jak Xenix, i zainspirowany Xenix, ale IBM wydał zanim Microsoft dostarczył OEM, a IBM użył ` (and / `dla przełączników) i zmienili monit z A:na, A>więc zmienili domyślną i wysłali błędną dokumentację (wciąż zakładając // -) oraz informację, że została zmieniona i dlaczego.
mirabilos 11.04.16
9

Bazowego Windows API może zaakceptować albo odwrotny ukośnik lub ukośnik do oddzielnych komponentów katalogów i plików na ścieżce, ale konwencja Microsoft jest użycie ukośnika i API, które zwracają ścieżki umieścić ukośnik w.

MS-DOS 2.0 skopiował hierarchiczny system plików z Uniksa i dlatego użył ukośnika, ale (prawdopodobnie pod naciskiem IBM ) dodał odwrotny ukośnik, aby umożliwić wpisanie ścieżek do powłoki poleceń, zachowując zgodność z MS-DOS 1.0 i CP / M, gdzie ukośnik był wskaźnikiem opcji wiersza polecenia.

Porównać

dir/w

który pokazuje bieżący katalog w szerokim formacie przeciwko

dir\w

który uruchamia wplik w reżyserze dir.

Bibliografia:

Tamara Wijsman
źródło