【问题标题】:What is the Bash Escape Character "\c"?什么是 Bash 转义字符“\c”?
【发布时间】:2011-08-22 23:33:21
【问题描述】:

Bash 中\c 转义字符的名称和功能是什么?它的数值是多少?我已经看到\cx 是一个控制字符,但是普通的\c 呢?看来:

echo -e "Hello World\c"

echo -en "Hello World"

是等价的。但是,Python 没有将它用作转义字符,并且我发现的所有转义字符列表中都缺少它。这是特定于 Bash 的行为吗?

【问题讨论】:

标签: bash unix escaping echo


【解决方案1】:

这实际上特定于 echo 的某些版本(我很确定 \c 来自 SysV,而 -n 版本是 BSD 主义)。

这只是意味着不输出尾随的换行符。

【讨论】:

    【解决方案2】:

    请参阅echo man pageBash Builtins section of the Bash manual 中的回声部分:

    echo 解释以下转义序列:

    ...
    \c
    抑制进一步的输出

    【讨论】:

    • 感谢参考和对 paxdiablo 回答的确认。
    • 值得一提的是 \c 不被识别,如果 -e 没有生效。
    【解决方案3】:

    它是“文本结束”控制字符;它通知 Shell 已到达文本结尾。

    不完全确定它是否相关,但我可能是错的。

    这是文档:

    http://en.wikipedia.org/wiki/ASCII#ASCII_control_characters

    和:

    http://en.wikipedia.org/wiki/End-of-text_character

    【讨论】:

    • CTRL-C 是 ETX 字符,但这与这种特殊情况几乎没有关系,否则 FF 将是 \l 而不是 \f,换行符将是 \j 而不是 \n 等等.
    • 我不明白你的意思,\c 是 ETX,这就是我所说的 - FF 是什么?
    • 嗨@Russ C,感谢您的回答。但是,@paxdiablo 似乎是对的。例如,尝试:echo -e "Hello World\03"(您提供的链接将 ETX 的数值列为 3)。它给出的结果与echo -e "Hello World\c" 不同。
    • 没问题;很高兴你有解决方案!我没有考虑 \c 可能被解释为十六进制 12,只是它是一个控制字符。
    【解决方案4】:

    您能否通过更多有关如何使用 \c 的上下文来更新您的问题?

    您可以使用\c 转义控制字符,例如写入文件或管道作为另一个命令的输入。

    这将向终端写入文本“some command”,后跟二进制 ctrl-d (ascii 0x4):

    echo some control string $'\cd' 
    

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 这在其他答案中已经提到了。
      猜你喜欢
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多