The backslash ( \) is a typographical mark used mainly in computing and is the mirror image of the common slash (/). It is sometimes called a hack, whack, Escape character (from C/UNIX), reverse slash, slosh, downwhack, backslant, backwhack, bash, reverse slant, and reversed virgule.
[ Macquarie Dictionary (3rd edition)] In Unicode and ASCII it is encoded at .
introduced the character into ASCII
on September 18, 1961,
as the result of character frequency studies. In particular, the was introduced so that the ALGOL boolean operators ∧ (and) and ∨ (or) could be composed in ASCII as and respectively.
[ "How ASCII Got Its Backslash", Bob Bemer]
Both these operators were included in early versions of the C programming language supplied with Unix V6, Unix V7 and more currently BSD 2.11.
In many programming languages such as C, Perl
, Python and in Unix
scripting languages, the backslash is used as an escape character
, to indicate that the character following it should be treated specially (if it would otherwise be treated normally), or normally (if it would otherwise be treated specially). For instance inside a C quoted string the sequence produces a newline
byte instead of an 'n', and the sequence produces an actual double quote rather than the special meaning of the double quote ending the string. In various regular expression languages it is used this way, changing subsequent literal characters into
and vice versa. Following this usage, the double backslash sequence produces a normal literal backslash.
Outside strings, the only common use in languages is at the end of a line to indicate that the trailing newline character should be ignored, so that the following line is treated as if it were part of the current line. In this context it may be called a "continuation".
The ALGOL 68 programming language uses the "\" as its Decimal Exponent Symbol. ALGOL 68 has the choice of 4 Decimal Exponent Symbols: e, E, \, or 10. Examples: , , or .
In APL is called Expand when used to insert fill elements into arrays, and Scan when used to produce prefix reduction (cumulative fold).
The backslash is used in the TeX typesetting system and in RTF files to begin markup tags. In Haskell, the backslash is used both to introduce special characters and to introduce lambda functions (since it is a reasonable approximation in ASCII of the Greek letter lambda, λ).
[O'Sullivan, Stewart, and Goerzen, Real World Haskell, ch. 4: anonymous (lambda) functions, p.99]
MS-DOS 2.0, released 1983, copied the hierarchical file system from Unix and thus used the (forward) slash, but (possibly on the insistence of IBM) added the backslash to allow paths to be typed at the command line interpreter's prompt while retaining compatibility with MS-DOS 1.0 and CP/M where the slash was the command-line option indicator (typing "" gave the "wide" option to the "" command, so some other method was needed if you actually wanted to run a program called inside a directory called ).
Except for COMMAND.COM, all other parts of the operating system accept both characters in a path, but the Microsoft convention remains to use a backslash, and APIs that return paths use backslashes. [
] In some versions, the option character can be changed from to via SWITCHAR, which allows COMMAND.COM to preserve in the command name.
The Microsoft Windows family of operating systems inherited the MS-DOS behavior and so still support either character – but individual Windows programs and sub-systems may, wrongly, only accept the backslash as a path delimiter, or may misinterpret a forward slash if it is used as such. Some programs will only accept forward slashes if the path is placed in Quotation mark.
] The failure of Microsoft's security features to recognize unexpected-direction slashes in local and Internet paths, while other parts of the operating system still act upon them, has led to some serious lapses in security. Resources that should not be available have been accessed with paths using particular mixes, such as .
In mathematics, a backslash-like symbol is used for the set difference.
The backslash is also sometimes used to denote the right coset space.
In some dialects of the BASIC programming language, the backslash is used as an operator symbol to indicate integer division.
In MATLAB and GNU Octave the backslash is used for left Matrix division, while the slash is for right matrix divide.
In PHP version 5.3 and higher, the backslash is used to indicate a namespace.
the backslash is used to mark format features for editing Bible translations.
Confusion in usage
In the Japanese encodings ISO 646 (a 7-bit code based on ASCII
), JIS X 0201 (an 8-bit code), and Shift JIS
(a multi-byte encoding which is 8-bit for ASCII), the code point
0x5C that would be used for backslash in ASCII is instead rendered as a yen mark (¥), while in Korean language
encoding, it is drawn as a Won sign
(₩). Computer programs still treat the code as a backslash in these environments, causing confusion, especially in MS-DOS filenames.
Due to extensive use of the backslash code point to represent the yen mark, even today some Unicode
fonts like MS Mincho
render the backslash character as a ¥, so the Unicode characters 00A5 (¥) and 005C (\) look identical when these fonts are selected. Several other ISO 646 versions also replace backslash with characters like Ö (German, Swedish), Ø (Danish, Norwegian), ç (French) and Ñ (Spanish), leading to similar problems. Since the character was originally not available in all character sets and keyboard layouts, ANSI C
can transcribe it in form of the C trigraph
which, even within
, is equivalent to the character. RFC 1345 recommends to transcribe the character as digraph , if not available.