什么是 Bash 转义字符 "\c"?

17

\c转义字符在Bash中的名称和功能是什么?它的数值是多少?我知道\cx是控制字符,但是普通的\c又是什么意思呢?看起来:

echo -e "Hello World\c"

并且

echo -en "Hello World"

这两种写法是等价的。但是Python中不使用它作为转义字符,而且我找到的所有转义字符列表中它都没有。这是Bash特有的行为吗?


我在C语言中尝试了这个,它会在屏幕上打印出“c”。http://codepad.org/sBWJfPkc - Anuj Kaithwas
5个回答

16

实际上这只适用于某些版本的echo命令(我很确定\c来自SysV,而-n版本则是BSD-ism)。

它的意思是不要输出结尾的换行符。


12

感谢提供参考资料并确认paxdiablo的回答。 - Keith Pinson
值得一提的是,如果没有启用 -e 选项,则 \c 不会被识别。 - Ahmed Hegazy

4

CTRL-C 是 ETX 字符,但这与此特定情况几乎没有关系,否则 FF 将是 \l 而不是 \f,换行将是 \j 而不是 \n 等等。 - paxdiablo
我不明白你的意思,\c 是ETX,这就是我说的 - FF是什么? - Russ Clarke
嗨@Russ C,感谢您的回答。然而,似乎@paxdiablo是正确的。例如,请尝试:echo -e“Hello World \ 03”(您提供的链接列出了ETX的数字值为3)。它与echo -e“Hello World \ c”不会产生相同的结果。 - Keith Pinson
没问题,很高兴你找到了解决方案!我没有考虑到 \c 可能被解释为十六进制 12,只是它是一个控制字符。 - Russ Clarke

0

你能否在问题中提供更多关于如何使用 \c 的上下文信息?

你可以使用 \c 转义控制字符,例如当你将其写入文件或作为另一个命令的输入时。

这将向终端输出文本 "some command",后跟二进制 ctrl-d(ascii 0x4):

echo some control string $'\cd' 

查看bash man页面上的转义字符完整列表: http://linux.die.net/man/1/bash


-1

"\c" 表示不再产生任何输出。


1
这已经在其他答案中提到过了。 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接