可以使用以下语法更新终端标题:
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
这是两个问题:
为什么?
转义序列不巢。标题序列开始于
\033]0;
并结束于\a
或任何其他控制序列。你怎么解决这个问题?
你可以消毒bash 命令,将其分配给变量并使用 shell 参数替换来删除转义字符(和
\a
ASCII BEL)。只是为了让它看起来漂亮,您还应该删除方括号(或者[
或者]
) 在转义字符之后,以及可能跟随的数字参数。
有人可能会提供一个使用的示例BASH_REMATCH
(设置为正则表达式匹配的副作用)并将其用作单词在${parameter##word}
替代...