如何使用“tput”命令设置终端的标题?

Mur*_*iar 9 shell bash terminal bashrc terminfo

我通过这个答案发现,多年来我一直在以一种幼稚的方式在提示中设置终端颜色。

我现在已经修改了我的 .bashrc 以使用 'tput' 命令来为我的提示的各种元素着色。我剩下的一个转义码是这样的:

TITLEBAR="\[\033]2; PROD - \u@\h:\w \007\]"
Run Code Online (Sandbox Code Playgroud)

有谁知道是否有一个 tput/terminfo 属性可以用来设置终端窗口的标题栏,以便我可以消除这种转义?

cod*_*ead 11

实际功能是 tsl(到状态行)和 fsl(从状态行),但当然不是所有终端都有。特别是在 Linux 中,您需要将终端设置为 xterm+sl 或类似的东西。

你可以用

export TERM=xterm+sl
echo `tput tsl` Hello world `tput fsl`; sleep 10
Run Code Online (Sandbox Code Playgroud)

我不会打扰并将这些转义保留在 .bashrc 中

  • `\033];` 是 `xterm` 中的转义序列,用于 [“操作系统命令”](https://gist.githubusercontent.com/lenormf/5c638b8c58b7460140cfa281d452f17e/raw/ecf68a80e8d964fbb48c77a64fbb48c78cfb964fbb48c77a7fb48c7fb8c77fb7fb8c77fb7fb8c77fb7fb7c7fb7fb98c7fb8c77fb7fb8c72fb7fb8c77fb7fb8c77fb7fb8c77fb8c77fb7fb8c72fb7fb28c77fb7fb8c77fb8c77fb7fb8c77fb7fb28c7fb7fb28c77fb98c77fb833]; 我不知道如何在 tput 中做到这一点,但是如果可以通过 tput 做到这一点,那将是跨平台终端标题设置的更好方法。例如,在 xterm 上,它会产生序列 `\033]0;Title\007`。另见[此处](http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Controls) (3认同)
  • 看来我的 Ubuntu 副本缺少该终端信息。:( 我责怪 terminfo 文件不完整:) (2认同)

小智 5

我无法发表评论,因此有一个额外的答案:

如果您使用 tsl/fsl,请务必先向终端询问 hs。如果支持 tsl/fsl(和其他 *sl),hs 应该为 true。

tput hs && { echo ....; }
Run Code Online (Sandbox Code Playgroud)