首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash反斜杠两级转义是如何表现的?

bash反斜杠两级转义是如何表现的?
EN

Stack Overflow用户
提问于 2018-03-03 13:40:22
回答 1查看 916关注 0票数 0

Bash反斜杠转义以下任何字符:

代码语言:javascript
复制
$ echo "Result: \e"
Result:
$ echo "Result: \\"
Result: \

然而,Bash反斜杠似乎有一个两级转义系统:

代码语言:javascript
复制
$ echo "Result: \\e"
Result:

如果我正确理解它,在前面的示例中,第一个反斜杠转义第二个反斜杠,这将导致反斜杠。这个反斜杠将转义下一个字符e

如果e被转义,为什么最后一个"没有转义?我希望下面的内容可以转义,但结果是一个简单的转义:

代码语言:javascript
复制
$ echo "Result: \\"
Result: \

这种选择性的两级转义是如何表现的,是什么触发了它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-21 22:40:54

您提到的转义字符\e对应于键盘"Esc“键,而不是反斜杠转义。要获得"Esc“键字符,必须使用:

代码语言:javascript
复制
echo $'\e'

您将得到UTF-8char0x001b,它是"Esc“密钥代码(UTF-8)。

通过运行man bash检查Bash的手册页,然后通过键入以下命令搜索"\e“:

代码语言:javascript
复制
/\\e

/用于查找,\\e用于转义\并获取\e

在Bash中,反斜杠的意思是“文字”。下面是我在GNU/Linux中使用bash4.4.20获得的一些评论结果。

代码语言:javascript
复制
$ echo "Result: e"
Result: e
$ echo "Result: \e"
Result: \e

我对这个结果有疑问(*)。

代码语言:javascript
复制
$ echo "Result: \\e"
Result: \e

在这里,我们说:一个文字\和e。这是它打印的。

代码语言:javascript
复制
$ echo "Result: \\\e"
Result: \\e

这里我们说:文字\和转义字符。

代码语言:javascript
复制
$ echo "Result: \\\\e"
Result: \\e

两个字面上的\。

代码语言:javascript
复制
$ echo "Result: \\\\\e"
Result: \\\e

两个文字\‘和一个转义字符。

代码语言:javascript
复制
$ echo "Result: \\\\\\e"
Result: \\\e

诸若此类。

在echo中,\e不作为转义字符工作,您必须使用\

(*)这个结果可能与echo $"\e"相对应。根据手册页:

一个带美元符号的双引号字符串($" string ")将导致字符串根据当前区域设置进行转换。

在巴什我得到:

代码语言:javascript
复制
$ echo $"\e"
\e
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49084755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档