对于远程和本地路径,正斜杠 (/) 和反斜杠 (\) 之间的主要区别是什么?
如果我没记错的话,反斜杠用于表示当前计算机或网络内的东西,例如 C:\Windows 或 \\172.12.1.34,而正斜杠用于表示当前计算机或网络之外的东西,例如http://www.google.com/。
我想知道这是否是一个准确的解释,或者差异实际上是否比这更深,而我给出的例子只是巧合。
答案1
Unix 及其变体一直使用正斜杠 (/) 来表示文件系统层次结构。
但是,Windows 的文件系统分隔符反斜杠 (\) 却源自其前身 MS-DOS。而 MS-DOS 并不是它的创始人。它是从 QDOS 操作系统(借用自 CP/M)移植过来的,MS 买下了 QDOS 操作系统并将其重新设计为 MS-DOS。
由于大多数(如果不是全部)基于 Web 的协议都源自 UNIX(HTTP、FTP 等),因此 Microsoft 遵守这些分隔符以保持兼容性。
答案2
这不是准确的解释。路径分隔符只是一个字符,一个标记,它有点随意,但通常被选择来标记自然分隔。反斜杠作为路径分隔符来自 CP/M、DOS 和 Windows 的血统。斜线来自 Unix 以及可能在它之前的其他系统。
由于大多数标准开发人员都熟悉 Unix,因此选择斜线作为 Internet URL 路径分隔符。Unix 斜线作为路径分隔符通常被认为是规范分隔符。它在键盘上的位置也使大多数需要经常输入斜线的人更容易打字。
即使是跨平台脚本语言,例如 Python,也使用斜线作为指定路径的“规范化形式”。
答案3
在实现层面,Windows 将以与 '\' 相同的方式处理 '/'。我只会使用 '/'。它将使您的所有应用程序都具有可移植性。MySQL 和 python 还会将 '/' 转换为系统上所需的任何内容,具体取决于它们使用的路径分隔符。
'\' 在其他领域(如正则表达式)以及某些终端和编程语言中用作转义字符。这将确保其后的下一个字符将被解释为文字字符,例如行末的 \n \r。
至于关于内部或外部系统的符号,这实际上并不正确。早期在 *nix 系统中,“/” 更受欢迎。后来微软开始流行,现在人们期望的是“\”。但正如我所提到的,微软必须符合 posix(posix 是操作系统应如何运行的标准),这意味着您可以在大多数地方将所有“\”替换为“/”,一切都会顺利进行。