反斜线
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
\ | |
---|---|
反斜线 | |
反斜线或反斜杠(\,英语:Backslash),是一种主要用于编写电脑程序的专门符号[1]。其Unicode编号为U+005C,HTML中代码是\
。
注意:符号“/”称为斜线、斜线号、斜杠或前斜线,应予以区分。
历史
根据电脑科学家鲍勃·比默介绍称,反斜线是由他于1961年在IBM工作时首先引入ASCII码的[2]。在ALGOL中,“/\”和“\/”这种斜线加上反斜线的形式被用来分别表示“∧”和“∨”这两个布尔运算符[2]。这两种运算符在早期由UnixV6及V7和其后2.11BSD支持下的C语言中均有包括。
使用
程序语言
在许多程序语言,如C语言、Perl、PHP和Unix脚本语言中,反斜线用来表示紧随其后的字符应被特殊处理,也就是转义字符。许多正则表达式语言都会将它视为字面意义和元字符之前的切换。例如\n
是换行,\0
是空字符,它们表示的实际上都是一个字符(char)。
在某些程序语言的命令行中,例如在linux中,反斜线常被放在一行的末尾用来指示编译器忽略其后的换行符,使得下一行会被当做同一行语句。这种情况下,反斜线作为一个强制换行符,将代码拆解成“连续行”。GNU make手册中写道:“我们用反斜线来将过长的命令行拆分成两行;它通常在一句过长的命令行中使用,使其更容易阅读。”[3]
操作系统
MS-DOS 1.0版本最初在1981年发布时并不支持目录结构。当时大批由IBM开发的DOS工具都使用正斜线作为命令行参数的起始符号,例如“DIR /W
”指令会以宽列表格式选项执行DIR命令。1983年,MS-DOS 2.0开发时引入了目录系统,并采用了与Unix相似的分层方式。然而Unix系统中用作路径分层的“/”在DOS上已被占用,为了与DOS 1.0保持兼容,微软的开发者们不得不选用了与其视觉上相近的“\”。[4]
Windows操作系统继承了MS-DOS的这一用法并且两种斜线的表示方法都可以被支持,用户如果输入了由正斜线表示的目录仍然可以跳转到正确的目录下。但是在个别的系统程序或应用中只接受反斜线的目录。[5]
希腊字母
在一些数学软件(如MATLAB)和维基百科上,可以使用反斜线输入希腊字母。\pi
会转成,\lambda
会转成。
替代
在日文编码时,在日文版本的ISO 646(基于ASCII集成的7位编码标准)、JIS X 0201(8位编码标准)以及Shift JIS(兼容ASCII多位编码标准)中,ASCII里用来表示反斜线的码位0x5C被日元符号“¥”取代。而电脑程序在许多环境下仍然会将该编码视为反斜线,由此造成了很多混淆,尤其是在MS-DOS的文件名中[6]。由于这一现象的相当普遍,时至今日仍然有一些Unicode字体,例如日文黑体MS Mincho会将反斜线渲染成“¥”,所以在这些字体中Unicode字符00A5(¥)和005C(\)看起来是一样的。同样的,许多ISO 646其他语言版本也将“\”替换成了其他符号,如“₩”(韩文)、“Ö”(德文、瑞典文)、“Ø”(丹麦文、挪威文)、“ç”(法文)和“Ñ”(西班牙文),它们均会导致同样的问题。由于不是所有的字符集和键盘布局上都包括反斜线,ANSI C标准支持将其转录成三字符组“??/”。RFC 1345则建议如果反斜线不可用则将其转录为“//”[7]。
参考文献
- ^ 教育部语言文字资讯管理司. G/\ BOT ..88888..翊2011 标点符号用法[S]. 北京:中国标准出版社,2011
- ^ 2.0 2.1 Bob Bemer. HOW ASCII GOT ITS BACKSLASH. Computer History Vignettes. [2014-06-08]. (原始内容存档于2013-01-11).
- ^ GNU 'make' manual. Gnu.org. [2013-06-16]. (原始内容存档于2013-07-03).
- ^ Why is the DOS path character "\"?. Blogs.msdn.com. 2005-06-24 [2013-06-16]. (原始内容存档于2010-03-30).
- ^ Why Windows Uses Backslashes and Everything Else Uses Forward Slashes. howtogeek.com. [2014-06-08]. (原始内容存档于2014-07-03).
- ^ When is a backslash not a backslash?. oreilly.com. [2014-06-25]. (原始内容存档于2016-03-04).
- ^ RFC 1345. Tools.ietf.org. 1991-12-26 [2013-06-16]. (原始内容存档于2013-05-30).