反斜線
反斜線或反斜槓(\,英語: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).