Screen 命令将 shell 标题设置为当前主机名

Screen 命令将 shell 标题设置为当前主机名

我想知道如何将 shell 标题设置为我们当前登录的主机的名称。我的场景是这样的。我登录到主机 A,然后打开屏幕并创建几个新窗口,并通过 ssh 连接到这些窗口上的不同主机。所以我希望底部的屏幕标题显示它所在的当前主机。 我正在谈论底部的这个特定字符串

答案1

实现此目的的一种方法是使用LocalCommand的功能ssh。使用此方法,在成功连接到远程主机后,将打印用于更改终端标题的转义序列。

编辑或创建~/.ssh/config以包含以下内容:

Host *
    PermitLocalCommand yes
    LocalCommand printf '\033]0;%%s\007' '%h'

此方法的缺点是注销远程服务器后标题仍保持更改。您可以通过以下方式解决这个问题:

printf '\033]0;%s\007' "$(uname -n)"

如果你想自动执行此操作,可以使用一个函数:

lssh () {
    /path/to/ssh "$@"
    printf '\033]0;%s\007' "$(uname -n)"
}

这个答案假设您的终端模拟器使用相同的转义序列作为 XTerm。如果不是这种情况,您应该检查特定终端仿真器的文档。

对于 GNU 屏幕,需要注意的是单个终端窗口可能包含多个虚拟窗口。在这种情况下,您可以使用不同的转义序列 ( \033k%s\033\\) 来设置单个虚拟窗口的内部标题。

相关内容