转义字符(\
)可用于转义行尾,例如
% echo This could be \
a very \
long line\!
This could be a very long line!
%
然而,不是由\n
表示的行尾(换行符),它有两个字符。转义的结果不应该是 \n
的字面值。 e.g。
%echo $'\\n'
\n
%
感谢您的回答!
编辑:
对不起,我的解释不够好。我不是想回应一条新线。我想知道为什么\
能够使用具有两个字符的新行字符(\n
)而不是仅仅转义新行字符中的反斜杠并生成\ n
答案 0 :(得分:16)
实际上,\n
并非真正换行符 - 它是表示换行符的转义序列(在Linux中只是一个字符) 。一行末尾的\
转义使用回车键输入的实际换行符。您可以使用hexdump查看ASCII值代表不同的字符:
%echo $'\\n'
\n
%echo $'\\n' | hexdump -C
00000000 5c 6e 0a |\n.|
00000003
您会注意到echo打印出3个字符:\
(5c),n
(6e)和换行符(0a)。您还会注意到,在hexdump输出的右侧,换行符显示为“。”,因为它被视为non-printing character。
答案 1 :(得分:1)
Newline是UNIX世界中给出的一个字符的名称,该字符在面向行的文件(或终端)中结束一行。在UNIX / Linux世界中,这对应于ASCII换行符。
不同的系统对结束行使用不同的约定:Windows使用一系列回车符和换行符,而Mac最初使用单回车符。这种混淆源于这样的事实,即这些原本是将打印机的打印头移动到新行开头所需的命令。
\n
是一种在代码中表达行尾字符的传统方式,最初在UNIX世界中,更确切地说是在C语言中。请注意,在读取文本文件时,即使在实际上是两个字符序列的系统上,C也会读取单个换行符。