当前位置: 首页 > news >正文

斜杠‘/‘ 和反斜杠‘\‘

1.从名字上区分

我相信很多人都分不清名称和符号的对应关系,“斜杠”、“反斜杠”和“/”、“\”。

用英文名记:

/ : forward slash,向前的斜杠,就像一个人向前倾;
\ : backward slash,向后的斜杠(反方向),就像一个人往后倒

中文近似义:

/ : 斜杠- 撇斜杠;
\ : 反斜杠 - 捺斜杠。

2.背景说明

只从计算机编程角度讲,在Unix系统中,使用了斜杠/作为路径分隔符,因为web最早是在Unix上跑的,所以URL也是使用/作为目录分隔符。后来Windows系统由于在Dos中使用\作为命令行参数eg:cd /d xxx_path(Unix中使用 “-”,"–"作为命令行参数),于是使用反斜杠\作为路径分隔符,这也是为很么使得很多人开始混淆两种斜杠的用法。
但是,现在Windows下也可以使用/作为路径分割符了。
微软有一篇博文对于这一点讲的很清楚,可以看一下。

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

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

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

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

3. 路径

/: 支持linux系统和Windows系统下的路径间隔;
\: 仅支持Windows系统下的路径间隔,在linux系统下该符号作为命令行的强制换行符号。

实例:

Linux
在这里插入图片描述

Windows: DOS

斜杠反斜杠

Windows: Matlab
在这里插入图片描述
4. 其他

\: 转义字符   #适用于各种编程语言、Latex、Markdown等。
/: 除法运算符

5.广义方面的区别


正斜杠(/)

正斜杠(/)是我们平时很多时候都会用到的斜杠,我们经常会见到这样的写法:小明/小红/小强,你/我/他等等。这种格式在各种文章里面十分常见,表示“或”或者是“和”的意思

浏览器中URL的层级URL标记符(//)以及路径分隔符(/)也是由正斜杠(/)组成,例如"https://zh.wikipedia.org/wiki/", 可以看到里面清一色的都是正斜杠(/)。使用正斜杠(/)的原因据说是web网站最早是在Unix系统下运行的,于是沿袭了Unix的那一套路径表述方式,因此使用正斜杠(/)作为分隔符。

正斜杠(/)也可以用作“除法”或者“分号”的作用,比如说"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部制造的飞机。

// 在控制台打印hello world!
console.log('hello world!')

反斜杠(\)

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

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

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

6.总结

说到这里,我已经尽可能简洁地把斜杠和反斜杠的区别用法给讲出来了。以下是在找资料时在一篇博文中看到的总结图,感觉很不错。
在这里插入图片描述

引用:
[1]: Why is the DOS path character ""? | Microsoft Docs
[2]: 深入探讨正斜杠和反斜杠 - 简书
[3]: 斜杠"/"与反斜杠"\"有什么区别? - 知乎

相关文章:

  • 转义字符详解
  • USB的VID、PID、PVN及分类(Class,SubClass,Protocol)
  • Windows下开发HID设备主机程序
  • Windows与自定义USB HID设备通信说明
  • usb server
  • window api 文件操作之CreateFile、ReadFile和WriteFile
  • 服务器硬件基础知识
  • XPath详解
  • XML详解
  • 串口是什么
  • USB接口
  • ch340是什么芯片
  • 最大路径长度限制
  • 启动配置数据(BCD)存储
  • 什么是EV 代码签名证书
  • 【css3】浏览器内核及其兼容性
  • 【译】理解JavaScript:new 关键字
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • avalon2.2的VM生成过程
  • CSS实用技巧
  • ECS应用管理最佳实践
  • es6(二):字符串的扩展
  • Git同步原始仓库到Fork仓库中
  • go append函数以及写入
  • javascript 哈希表
  • JS函数式编程 数组部分风格 ES6版
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • MaxCompute访问TableStore(OTS) 数据
  • Node + FFmpeg 实现Canvas动画导出视频
  • oschina
  • PAT A1092
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SpingCloudBus整合RabbitMQ
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 记录:CentOS7.2配置LNMP环境记录
  • 类orAPI - 收藏集 - 掘金
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 扑朔迷离的属性和特性【彻底弄清】
  • 什么是Javascript函数节流?
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 在electron中实现跨域请求,无需更改服务器端设置
  • Python 之网络式编程
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 达梦数据库知识点
  • #{}和${}的区别是什么 -- java面试
  • #162 (Div. 2)
  • (¥1011)-(一千零一拾一元整)输出
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Java)【深基9.例1】选举学生会
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)斐波那契Fabonacci函数
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (十)T检验-第一部分
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验