
Ich möchte wissen, wie ich den Shell-Titel auf den Namen des Hosts setzen kann, bei dem wir gerade angemeldet sind. Mein Szenario sieht folgendermaßen aus: Ich melde mich bei Host A an, öffne dann den Bildschirm und erstelle mehrere neue Fenster und stelle in diesen Fenstern eine SSH-Verbindung zu verschiedenen Hosts her. Ich möchte also, dass der Bildschirmtitel unten den aktuellen Host anzeigt, bei dem er sich befindet.
Antwort1
Eine Möglichkeit hierfür besteht darin, die LocalCommand
Funktion von zu verwenden ssh
. Mit dieser Methode wird nach einer erfolgreichen Verbindung mit einem Remote-Host eine Escape-Sequenz zum Ändern des Terminaltitels gedruckt.
Bearbeiten oder erstellen Sie ~/.ssh/config
, um etwas wie Folgendes einzuschließen:
Host *
PermitLocalCommand yes
LocalCommand printf '\033]0;%%s\007' '%h'
Der Nachteil dieser Methode ist, dass der Titel nach dem Abmelden vom Remote-Server geändert bleibt. Sie können das folgendermaßen umgehen:
printf '\033]0;%s\007' "$(uname -n)"
Wenn Sie dies automatisieren möchten, können Sie eine Funktion verwenden:
lssh () {
/path/to/ssh "$@"
printf '\033]0;%s\007' "$(uname -n)"
}
Diese Antwort setzt voraus, dass Ihr Terminalemulator dengleiche Escape-Sequenzenals XTerm. Wenn dies nicht der Fall ist, sollten Sie die Dokumentation Ihres spezifischen Terminalemulators prüfen.
Eine Einschränkung bei GNU screen besteht darin, dass ein einzelnes Terminalfenster mehrere virtuelle Fenster enthalten kann. In diesem Fall könnten Sie eine andere Escape-Sequenz ( \033k%s\033\\
) verwenden, um den internen Titel eines einzelnen virtuellen Fensters festzulegen.