在今天的话题开始之前,我想让大家猜一个问题:
问题:“/”这是正斜杠,还是反斜杠?
借一位大神的理解来说明:“/”是一个人站立着向前倾倒, 而“\”是一个人站立着向后倾倒。
为什么这俩货那么像,感觉用途也差不多,就不能统一下?
今天我们一起聊聊他们的前世今生:
正斜杠 “/”
早期的Unix系统设计中,正斜杠 “/”被选定作为目录分隔符。
/home/user/documents
这一选择主要是由于斜杠在ASCII
字符集中位于更容易访问的位置,并且早期计算机系统的键盘布局也使其易于输入。
反斜杠(\)在早期的键盘布局中通常需要使用Shift键或者位于较不显眼的位置,这使得它在当时的输入操作中不如斜杠方便。
随着互联网的发展,蒂姆·伯纳斯·李(Tim Berners-Lee
)在设计URL(统一资源定位符)时也选择了使用正斜杠 “/”作为路径分隔符,以保持与Unix文件系统的兼容性。
反斜杠 “\”
然而在MS-DOS系统中,反斜杠“\”被选定为目录分隔符。
C:\Users\User\Documents
这一选择的一个原因是当时的操作系统需要与CP/M
操作系统兼容,而CP/M
使用反斜杠 “\”作为命令行参数的前缀。为了避免冲突,MS-DOS选择了反斜杠作为目录分隔符。
CP/M(Control Program for Microcomputers)
是由Gary Kildall
在1974年为Intel 8080/85
基于Zilog Z80
微处理器设计的一种早期操作系统。它在20世纪70年代末和80年代初非常流行,被广泛用于早期的微型计算机上。
实际使用中的区别
用作目录分割符
Unix(Linux、macOS和其他类Unix系统中),使用正斜杠 “/”;
/home/user/documents
在Windows操作系统中,使用反斜杠 “\”;
C:\Users\User\Documents
用作运算符号
正斜杠 “/”,表示除法,“//”表示取整除;
反斜杠 “\”,表示转义。比如 \n
是换行符。
包裹正则表达式
在Perl和JavaScript等语言中,正斜杠 “/” 用于包围正则表达式。例如:/regex/
。
URL
在URL中,正斜杠 “/”用于分隔协议、域名和路径。
https://www.google.com/
资源路径(坑点!!)
在使用Windows环境开发时,出现在普通字符串的路径,如果是windows文件路径,则使用 正斜杠/ 和 反斜杠\ 是一样的;
如果是网络文件路径,则必须使用 **正斜杠//**。
1 <img src=".\Image/maishu/1.jpg" /> // 本地文件路径,/ 和 \ 是等效的
2 <img src="./Image\maishu\1.jpg" />
3 <img src="http://www.google.com/maishu/pic/1.jpg" /> // 网络文件路径,一定要使用 斜杆/
最后
斜杠(/) 和反斜杠(\) 在不同操作系统中被选择为目录分隔符,主要原因包括字符在ASCII字符集中的位置、键盘布局的便捷性,以及历史设计决策和兼容性需求。
我觉得让大家理解这些背景有助于更好地理解不同操作系统的设计选择和使用习惯。