这让我很恼火,因为我在大学时用过 Unix,现在却在 Windows 上工作。这个决定背后的历史是什么?有人知道为什么会这样吗?
答案1
Unix/
在 1970 年左右引入了目录分隔符。我不知道为什么选择这个字符;祖先系统 Multics 使用了>
,但 Unix 的设计者已经将>
和<
用于 shell 中的重定向(参见为什么根目录用符号来表示/
?)。
操作系统2.0\
于 20 世纪 80 年代初引入目录分隔符。之所以/
没有使用,是因为 MS-DOS 1.0(根本不支持目录)已经使用/
引入命令行选项. 它可能/
从虚拟机管理系统(其语法更为复杂目录)您可以阅读有关做出该选择的更详细解释在 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)。另一方面,标准文件打开对话框拒绝斜线。
答案2
这底层 Windows API可以接受反斜杠或斜杠来分隔路径的目录和文件组件,但 Microsoft 的惯例是使用反斜杠,并且返回路径的 API 会将反斜杠放进去。
MS-DOS 2.0从 Unix 复制了分层文件系统,因此使用了正斜杠,但(可能是在IBM)添加了反斜杠,允许在命令 shell 中输入路径,同时保持与MS-DOS 1.0和控制/管理其中斜线是命令行选项指示符。
- 比较
dir/w
以宽格式显示当前目录与运行目录内的dir\w
文件的。w
dir
参考: