19

转义字符 ( \) 可用于转义行尾,例如

% echo This could be \
a very \
long line\!
This could be a very long line!
%

但是,不是由\n两个字符表示的行尾(新行)。转义的结果不应该是\n. 例如

%echo $'\\n'
\n
%

谢谢您的回答!

编辑:对不起,我解释得不够好。我不是想回应一个新行。我想知道为什么\能够使用具有两个字符的换行符 ( \n) 而不是仅仅转义换行符中的反斜杠并产生 \n 的文字

4

2 回答 2

26

实际上,\n它并不是真正的换行符——它是一个转义序列,表示换行符(在 Linux 中只是一个字符)。行\尾的 转义您使用回车键输入的实际换行符。您可以使用hexdump查看代表不同字符的 ASCII 值:

%echo $'\\n'
\n
%echo $'\\n' | hexdump -C
00000000  5c 6e 0a                   |\n.|
00000003

您会注意到 echo 打印出 3 个字符:\(5c)、n(6e) 和换行符 (0a)。您还会注意到,在 hexdump 输出的右侧,换行符显示为“.”,因为它被视为非打印字符

于 2013-06-03T20:22:26.697 回答
1

换行符是 UNIX 世界中用于在面向行的文件(或终端)中结束行的字符的名称。在 UNIX/Linux 世界中,这对应于 ASCII 换行符。

不同的系统使用不同的惯例来结束行:Windows 使用一系列回车和换行,而 Mac 最初使用单个回车。这种混淆源于这样一个事实,即这些最初是将打印机的打印头移动到新行的开头所需的命令。

\n是在代码中表达行尾字符的传统方式,同样最初是在 UNIX 世界中,更准确地说是在 C 语言中。请注意,在读取文本文件时,即使在实际上是两个字符序列的系统上,C 也会读取单个换行符。

于 2013-06-03T20:11:31.200 回答