正斜杠“/”和反斜杠“\\”

发现问题了么?上面的代码块root路径都是以斜杠(/)分隔的,下面的代码块的root路径却是以反斜杠(\)分隔的。两种不同的方式却能同样生效,这个是为什么呢?

作为路径分隔符在windows和Unix系统下的区别

在上文中的例子,不论是正斜杠还是反斜杠(\),都是作为路径分隔符存在的,因此我们首先把他们作为路径分隔符,分别在windows和Unix两种不同内核的系统下进行一波测试。

windows(win764位系统)下:

Unix(Ubuntu14.04.5)下:

可以看出,Unix内核系统,路径格式仅支持正斜杠(/)分隔,而windows的系统,正斜杠(/)反斜杠(\)都支持,这是个很奇妙的差别。

在查询了资料后,我才知道造成这种差别的深层次原因。

windows的命令行(CMD应用程序)跟早期的MS-DOS操作系统的命令格式是前向兼容的。而DOS系统其实有很多历史遗留问题。

DOS系统很大一部分参考(抄袭?)自加里·基尔代尔的更早的一款操作系统CP/M。

CP/M是数字研究公司(1991年被Novell所兼并)在1974年开发,为8位CPU(如Intel8080、ZilogZ80等)的个人电脑(PC)所设计的操作系统。在PC市场的黎明阶段,它成为被广泛应用的操作系统。可是因为在向16位CPU的转化上错失机会,在以IBMPC/AT以及IBMPC兼容机为中心的16位PC市场上惨败给Microsoft的MS-DOS,从而从市场上消失。虽然CP/M推出了为Intel8086而设计的“CP/M86”以及为Motorola68000而设计的“CP/M68k”等版本,但用户几乎不存在。

由于CP/M系统是不支持目录的,/被拿来用作命令行参数的标识符,比如说dir/a,dir/w,dir/q等等(Unix用的是”-“),因此,当MS-DOS系统准备支持目录时,/已被占用,只能使用\来表示路径分隔符了。再后来,windows系统诞生之时,命令行因为要跟MS-DOS兼容,只能把DOS的特性沿用了下来,同时又给支持/作为路径分隔符,于是就造成了现在这种正斜杠(/)反斜杠(\)都支持作为路径分隔符的情况的出现。而Unix不存在这种历史遗留问题,从诞生之初就开始使用斜杠(/)作为路径分隔符,因此,两个系统在这种奇怪的地方出现了分叉。

而我当时的那段代码

1

2

3

location/{

rootF:\webapp\portal;

}

中的root路径,是直接从windows系统中粘贴的路径,因此就会出现这种反斜杠(\)做分隔符的奇怪场景。

对了,在测试过程中还发现了windows系统中使用/和\做分隔符的一个好玩的区别:

因此,仅在windows下做目录操作时,还是使用反斜杠(\)做分隔符系统支持度更强些,使用体验也更好一些。

广义方面的区别

正斜杠(/)

正斜杠(/)也可以用作“除法”或者“分号”的作用,比如说”100÷4”我们在计算机上输入时,由于除号比较难输,经常就会写成”100/4”,效果是完全一致的。这种用法应该是从“分号”演化来的,毕竟”4/3”你看做“三分之四”还是看做“4除以3”,都是可以的。

连续两个正斜杠(/)可做“注释”之用,在C++/C#/Java/JavaScript/PHP等主流编程语言中基本上通用:

日期也可以使用正斜杠(/)分隔年月日,例如”2017/11/17”,也可以用美国标准”11/17/2017”,都表示2017年11月17日。

最后,斜线除了上述用法,也成为连字号的代替品。例如美国空军的飞机序号。”85-1000”是第1000架飞机在1985年制造,使用斜线”85-1001/1050”表示首批连串50部制造的飞机。

//在控制台打印helloworld!

console.log('helloworld!')

反斜杠(\)

比起正斜杠(/)的诸多用处,反斜杠(\)的用处可就少多了。如果你还是动不动就用到反斜杠(\),证明你肯定是一个程序员。

反斜杠(\)除了可以在windows下可以做路径分隔符外,最常用的功能就是做转义字符了。许多正则表达式语言都会将它视为字面意义和元字符之前的切换。例如\n是换行,\0是空字符,它们表示的实际上都是一个字符(char);而在一些数学软件(如MATLAB)和维基百科上,可以使用反斜线输入希腊字母。\pi会转成π,\lambda会转成λ。由于反斜杠(\)存在转义字符的作用,因此我们常常在一些代码里面看到形如”C:\\Windows\\System32\\cmd.exe”的路径格式(实际上你看到的双反斜杠(\),我在markdown格式下输入了连续4个反斜杠…),并不代表实际路径是这样的,而是其中连续两个反斜杠(\)发生了“化学反应”,第一个反斜杠(\)代表对后面部分进行转义,而对反斜杠(\)的转义还是反斜杠(\),因此虽然连续输入两个反斜杠(\),但是实际输出时只有一个反斜杠(\)。

另外,在某些程序语言的命令行中,例如在linux中,反斜线常被放在一行的末尾用来指示编译器忽略其后的换行符,使得下一行会被当做同一行语句。这种情况下,反斜线作为一个强制换行符,将代码拆解成“连续行”。

小结

TIPS

看了这么一大堆正斜杠(/)和反斜杠(\),是不是头都大了呢?没关系,要想记忆区分正斜杠(/)反斜杠(\),可以把他们想象为笔画上的撇(丿)和捺(),一撇一捺是为八,第一笔正斜,第二笔反斜(/\),这样是不是好记多了呢?

文自:拓跋的前端客栈

如涉及侵权请联系我们马上处理

·END·

——面试求职|每日一荐——

梁胜博士写给程序员的话

程我的个人职业发展心路历程及对程序员职业生涯规划的建议

本文为RancherLabsCEO兼创始人梁胜博士应InfoQ之邀,为广大程序员专门撰写的个人职业发展心路历程及对程序员职业生涯规划的建议。

梁胜博士是RancherLabsInc.公司联合创始人及CEO。创立RancherLabs之前,早期在全球知名的他SunMicrosystems公司担任核心主任级工程师期间,梁胜博士是Java语言J2SE平台核心组件JNI(JavaNativeInterface)的作者,并随后领导设计和开发了Java语言最为核心的JVM(Java虚拟机)。

......

(查看全文,请订阅号内对话框回复:梁)

文自:InfoQ-梁胜编辑:谢然感谢作者让我们了解更多!谢谢!

THE END
1.“/”和“\”傻傻分不清?它在英语里真不念“gang”!家人们是否曾经在键盘上看见“/”和“\”这两个英文符号的时候会傻傻分不清楚? 今天英大就给小伙伴们讲一讲这两个符号的中英文名称和用法,帮大家“一解前惑”。 “/”在英语里叫forward slash,forward是“向前”的意思,slash是“斜杠”https://mp.weixin.qq.com/s?__biz=MjM5MjAxNTA0MA==&mid=2655491394&idx=2&sn=025af9c180017f10973d08b1c7cc103c&chksm=bd1f82ed8a680bfbe2e311af456ff821a2e758bc84998ef6815d98c4291ec8ef76a7d4af2842&scene=27
2.正斜杠“/“与反斜杠“\“的使用区分正斜杠“/“与反斜杠“\“的使用区分 本文介绍了在编程和操作系统中,斜杠(/)和反斜杠()的不同使用场景。斜杠主要用作Unix/Linux路径分隔符、网络地址、注释、日期和正则表达式的一部分,而反斜杠在Windows路径中作为分隔符,且常作为转义字符。在Docker命令中,两者有特定的应用,如路径表示和换行。总结来说,Windowshttps://blog.csdn.net/weixin_49764008/article/details/128617144
3.BACKSLASHDefinition&MeaningDictionary.combackslash [bak-slash ] Phonetic (Standard)IPA noun a short oblique stroke (\), a backward slash, used in some computer operating systems to mark the division between a directory and a subdirectory or its folders, as in designating a path.https://www.dictionary.com/browse/backslash
4.Python编程中反斜杠“\”的作用:作为续行符和转义字符,处理Python中的反斜杠\可以被用作续行符,它允许你将一行代码分成多行来书写,以提高代码的可读性。这在处理长字符串、复杂的数学表达式或其他需要多行布局的代码时非常有用。 使用续行符时,请注意以下几点: 放置位置:反斜杠\必须放在一行的末尾,紧接着需要续行的语句之后。 https://cloud.tencent.com/developer/article/2421016
5.BackslashDefinition&MeaningMerriamThe meaning of BACKSLASH is a mark \ used especially in computer programming.https://www.merriam-webster.com/dictionary/backslash
6.键盘上怎么打反斜杠在键盘上输入反斜杠符号(\)的方法有多种,但具体操作步骤可能会因不同的操作系统和输入法而有所不同。本文将详细介绍几种常见的方法,用户可以根据自己的熟悉程度去选择合适的输入方式。 键盘上怎么打反斜杠 反斜杠键 切换到英文输入法,然后按下反斜杠键即可即可输入反斜杠符号(\)。 https://in.ali213.net/yjjc/202406/18853.html?mobile
7.(已更新至大结局)李宝英金瑞亨《MINE\我的》服化细节隐喻分析李宝英、金瑞亨主演的《MINE》(《我的》)是一部描写上流社会欲望和爱情纠葛的黑色悬疑剧。有一点《顶楼》的味道~宝英的温柔气质、金老师的强势气场,两个人的火花值得期待~另外一点吸引我的,是这部剧的画面非常美、细节及服化道之用心,使画面更好地为剧情服务,几乎没有一个没用的镜头。看过前2集的小伙伴,https://movie.douban.com/review/13544390/
8.“/”和“\”有什么区别?英语千万别读成“gang”……昨晚最姐在码字的时候,小表妹突然凑过来,指着键盘上的“/” 和“\” 问: 这个两个“gang”有什么区别呀? 这是个有趣的问题。 通常,“/”被叫作“正斜杠”,英语是forward slash,经常简称为slash。 而“\”被叫作“反斜杠”,英语是backward slash。 https://www.360doc.cn/mip/1117912131.html
9.URL编码比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。编码表 防止sql注入 URL编码平时是用不到的,因为IE会自动将输入到地址栏的非数字字母转换为url编码。曾有人提出数据库名字里带上“#”以防止被下载,因为IE遇到#就会忽略后面的字母。破解方法很简单——用url编码%23替换掉#。SQLhttps://baike.baidu.com/item/URL%E7%BC%96%E7%A0%81/3703727
10.路径中斜杠“/”和反斜杠“\”的区别路径中使用斜杠/和反斜杠\的区别到底是什么。 1.正斜杠,又称左斜杠,符号是”/”;反斜杠,也称右斜杠,符号是”\”。 2.在Unix/Linux中,路径的分隔采用正斜杠”/”,比如”/home/hutaow”;而在Windows中,路径分隔采用反斜 杠”\”,比如”C:\Windows\System”。而web应用最新使用在Unix系统上面,所以目前所有的https://www.gdafc.edu.cn/wlzx/info/1023/1236.htm
11."./"与".\"的区别在UNIX和LINUX系统中,使用“./”作为路径分隔符。 在Windows系统中,由于斜杠/作为DOS命令提示符的参数标志了,为了不混淆所以采用反斜杠\作为路径分隔符。所以目前Windows系统上的文件浏览器都是用反斜杠\作为路径分隔符。随着发展,DOS系统已经被淘汰了,命令提示符也用得很少,斜杠和反斜杠在大多数情况下可以互换。 https://www.jianshu.com/p/cd4611644b58
12./”和“\”有什么区别?英语千万别读成“gang”今天,我们要深入探讨的是两个看似简单却充满奥秘的符号——“/”(斜杠)与“\”(反斜杠)。它们不仅在日常计算机操作中频繁出现,更在编程、文件路径、数学运算等多个领域发挥着不可替代的作用。但你知道吗?在英语中,它们的发音绝非“gang”,而是有着独特的韵味。接下来,我们将一起揭开这两个符号的神秘面纱,并https://m.sohu.com/a/827056496_121118945/
13.360极速浏览器软件下载360极速浏览器32\64位电脑版360极速浏览器大全之中为用户带来了360极速浏览器所有的版本,帮助用户轻松的下载自己需要的版本,360极速浏览器拥有的功能可以让用户上网更加方便,这款软件可以和360旗下的浏览器共通账号,让用户保存的网页和密码可以在任意登录了相同账号的浏览器上面使用,这款浏览器同样继承了360让人放心的安全性,让用户放心上网不用http://www.downcc.com/k/360jsllq/
14.基于文件路径中/\//\\的用法以及绝对相对路径的问题python2.Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符; Windows由于已经使用斜杠/作为DOS命令提示符的参数标志了,为了不混淆所以采用反斜杠\作为路径分隔符。"\"在DOS中表示右边的字符串是以左边字符串为名称的目录下的子目录或者文件名;比如 C:\bb\https://www.jb51.net/python/315433wrg.htm
15.20尺柜40尺柜20尺\40尺\45尺高柜的长宽高是多少在国际海运过程中少不了用到集装箱,根据集装箱的用途和体积可以分很多种。如:普柜、高柜、开顶柜等,其中最常用的是20尺柜、40尺柜、20尺高柜、40尺高柜、45尺高柜这几种。了解它们的体积可以知道到底能装多少货,也方便在订柜的时候叫拖车公司提合适的货柜来做柜。 https://www.usniuku.com/news-show-320
16.会计网的微博中级会计新大纲 分录\法条\公式汇总.pdf(背)中级会计新大纲 题库+网课(覆盖各阶段需要)展开全文c 中级会计超话 ?收藏 转发 4 ?赞 c +关注 会计网 6月6日 19:33 来自中级会计超话 这才是真正的备考!24中级会计考试必看!24年中级会计上岸附件下载(适用于24年新考生)中级会计【900https://www.weibo.com/wwwkuaijicom
17.GitHubFprintf(ctx, "this is the first part of body\n") // then set more headers ctx.Response.Header.Set("Foo-Bar", "baz") // then write more body fmt.Fprintf(ctx, "this is the second part of body\n") // then override already written body ctx.SetBody([]byte("this is completely https://github.com/valyala/fasthttp