Dlaczego system Windows używa ukośników odwrotnych do ścieżek i ukośników do przodu?
85
Denerwuje mnie to, że korzystałem z Uniksa na studiach, a teraz pracuję po stronie Windows. Jaka jest historia tej decyzji? Czy ktoś wie, dlaczego tak się udało?
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 .
/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
Odpowiedzi:
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ń (wcommand.com
lubcmd
) możesz używać/
w wielu przypadkach, ale nie zawsze; jest to częściowo zależne od wersji systemu Windows (na przykładcd /windows
dział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 .źródło
/
jest rozpoznawany jako separator katalogów przez wiersz poleceń MS-DOS lub Windows./
jest akceptowane w wierszu poleceń? Na przykład, co robidir /p
? idir c:/p
? ic:/windows/notepad.exe
? istart /windows/notepad.exe
? itp. (Nie mam tutaj komputera z systemem Windows do testowania)./
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: - ; , . /
./
(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 zA:
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.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ć
który pokazuje bieżący katalog w szerokim formacie przeciwko
który uruchamia
w
plik w reżyserzedir
.Bibliografia:
źródło