題 為什麼Windows使用反斜杠作為路徑和Unix正斜杠?


在大學裡使用Unix,現在在Windows上工作,這讓我感到很惱火。這個決定背後的歷史是什麼?任何人都知道為什麼這樣做了嗎?


83
2017-08-16 13:37


起源


斜杠與反斜杠作為目錄分隔符 - 是什麼/誰造成了這個裂痕? - phuclv


答案:


Unix介紹 / 作為1970年左右的目錄分隔符。我不知道為什麼選擇這個確切的字符;使用Multics的祖先系統 >但是Unix的設計者已經使用過了 > 和...一起 < 用於shell中的重定向(參見 為什麼根目錄由a表示 / 標誌?)。

MS-DOS 2.0介紹 \ 作為20世紀80年代早期的目錄分隔符。原因 / 未使用的是MS-DOS 1.0(根本不支持目錄)已經在使用 / 引入命令行選項。它花了這個用法 / 從 CP / M從中獲取了它 VMS。您可以閱讀更詳盡的解釋為什麼做出選擇 在Larry Osterman的博客上 (MS-DOS甚至可以簡單地選擇將選項字符更改為 - 和目錄分隔符 /,但它沒有堅持)。

/ 它被大多數程序員級API(在所有版本的DOS和Windows中)識別。所以你經常可以,但並不總是逃避使用 / 作為Windows下的目錄分隔符。一個值得注意的例外是 你不能用 / 作為之後的分隔符 \\? 字首 其中(即使在Windows 7中)是使用Unicode指定路徑或包含超過260個字符的唯一方法。

一些用戶界面元素支持 / 作為Windows下的目錄分隔符,但不是全部。有些程序只是將文件名傳遞給底層API,因此他們支持 / 和 \ 漠然。在命令解釋器中(在 command.com 要么 cmd), 您可以使用 / 在許多情況下,但並非總是如此;這部分取決於Windows的版本(例如, cd /windows 適用於XP和7但不適用於Windows 9x)。 Explorer路徑輸入框接受 / (至少從XP上來;可能是因為它也接受了URL)。另一方面,標准文件打開對話框 拒絕斜線


97
2017-08-16 14:02



/ 被MS-DOS或Windows命令行識別為目錄分隔符。 - Tom Wijsman
“C:\ Windows \ System32> cd / windows / system”有效。 - Andrew J. Brehm
@TomWij:你有關於精確位置的參考嗎? / 在命令行上被接受?例如,做什麼 dir /p 做?和 dir c:/p?和 c:/windows/notepad.exe?和 start /windows/notepad.exe?等等(我這裡沒有Windows機器來測試。) - Gilles
/ 可能在UNIX中用作目錄分隔符,因為它是一個輕鬆(未移位)鍵,可以攻擊Teletype。沒有變化的特殊角色是 : - ; , . /。 - Daniel R Hicks
有趣的是,我最近挖了DOS 1和2來源和手冊,發現微軟使用過 / (和 - 對於像Xenix這樣的交換機,受到Xenix的啟發,但IBM在微軟發布給OEM之前發布了IBM,並且IBM使用過 ` (and /`for switches)並改變了提示符 A: 至 A> 所以他們改變了默認和運輸的馬車(仍然假設 //-)文件加上一條說明它被改變的原因。 - mirabilos


底層Windows API 可以接受反斜杠或斜杠來分隔路徑的目錄和文件組件,但Microsoft約定是使用反斜杠,而返迴路徑的API會反斜杠。

MS-DOS 2.0 從Unix複製分層文件系統,因此使用正斜杠,但(可能是堅持 IBM)添加反斜杠以允許在保持兼容性的同時將路徑鍵入命令shell MS-DOS 1.0 和 CP / M 斜杠是命令行選項指示符。

相比

dir/w

以寬格式顯示當前目錄

dir\w

哪個運行了 w 在導演中存檔 dir

參考文獻:


9
2017-08-16 13:52