行尾(新行)在bash中转义

Yol*_*and 14 linux bash shell

Escape character(\)可用于逃避行尾,例如

% echo This could be \
a very \
long line\!
This could be a very long line!
%
Run Code Online (Sandbox Code Playgroud)

但是,它不是由\n两个字符表示的行尾(换行).不应该逃避的结果是字面意思\n.例如

%echo $'\\n'
\n
%
Run Code Online (Sandbox Code Playgroud)

谢谢您的回答!

编辑:对不起,我没有解释得那么好.我不是想回应一条新线.我想知道为什么\能够使用\n两个字符的新行字符()而不是在新行字符中转义反斜杠并生成\n的字面值

Mar*_* K. 18

其实,\n是不是真的一个换行符-这是一个转义序列代表一个新行(这是Linux的一个字符).在\一行的末尾逃脱实际您在使用回车键输入换行符.您可以使用hexdump查看ASCII值代表不同的字符:

%echo $'\\n'
\n
%echo $'\\n' | hexdump -C
00000000  5c 6e 0a                   |\n.|
00000003
Run Code Online (Sandbox Code Playgroud)

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