用于更改终端名称的 ANSI 序列

ale*_*dro -1 terminal perl ansi-escape

我使用 bash 脚本 ( konsole-name.sh ) 来更改终端名称,如下所示:

#!/usr/bin/bash
echo -en "\e]30;$1\a"
Run Code Online (Sandbox Code Playgroud)

我想使用与检查 GPU 温度相同的 perl 脚本方法,以便定期更新窗口标题。

然而我没有找到方法。我尝试了这两个:

$comm='echo -en "\e]30;T=$t\a"';
`$comm`;
Run Code Online (Sandbox Code Playgroud)

这是使用我的 bash 脚本:

$comm="konsole-name.sh T=$t";
`$comm`;
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到吗?

Cor*_*ion 5

控制台转义序列通过将文本打印到终端来工作。在您的情况下,反引号会吞噬脚本的输出。

很可能您只想打印 "\e]30;$1\a"; 从 Perl 内部:

my $title = "Fancy terminal title";
print "\e]30;${title}\a";
Run Code Online (Sandbox Code Playgroud)

  • 根据记录,由于这个问题在 google 上排名很高:如果使用 XTerm 或 Gnome 终端,正确的转义序列是 `echo -ne "\e]2;$1\a"` (3认同)