更新调试陷阱中的终端标题会破坏着色

更新调试陷阱中的终端标题会破坏着色

可以使用以下语法更新终端标题:

echo -ne "\033]0;TITLE\a"

哪里\a还可以\007。为了动态更新窗口标题(在进程启动时),我将以下内容放入我的.bashrc(灵感来自这个答案,简化):

MY_TRAP_DEBUG() {
    echo -ne "\033]0; ${BASH_COMMAND} \a"
}
trap MY_TRAP_DEBUG DEBUG

工作正常。但是,现在当我想打印彩色输出时:

echo -e "\033[0;33m SOME YELLOW TEXT"

,输出包含 ascii 沙拉中的命令和结果:请参见下面的屏幕截图。

在此输入图像描述

  1. 为什么?
  2. 我该如何解决?

答案1

这是两个问题:

  • 为什么?

    转义序列不。标题序列开始于\033]0;并结束于\a 或任何其他控制序列

  • 你怎么解决这个问题?

    你可以消毒bash 命令,将其分配给变量并使用 shell 参数替换来删除转义字符(和\aASCII BEL)。只是为了让它看起来漂亮,您还应该删除方括号(或者[或者]) 在转义字符之后,以及可能跟随的数字参数。

有人可能会提供一个使用的示例BASH_REMATCH(设置为正则表达式匹配的副作用)并将其用作单词${parameter##word}替代...

相关内容