Screen コマンドはシェルのタイトルを現在のホスト名に設定します

Screen コマンドはシェルのタイトルを現在のホスト名に設定します

シェルのタイトルを、現在ログインしているホストの名前に設定する方法を知りたいです。私のシナリオは次のようになります。ホスト A にログインし、画面を開いていくつかの新しいウィンドウを作成し、それらのウィンドウでさまざまなホストに SSH 接続します。そのため、画面の下部のタイトルに、現在ログインしているホストが表示されるようにしたいと思います。 私は一番下にあるこの特定の文字列について話しています

答え1

これを行う 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 screen の場合の注意点は、1 つのターミナル ウィンドウに複数の仮想ウィンドウが含まれる場合があることです。その場合、別のエスケープ シーケンス ( \033k%s\033\\) を使用して、1 つの仮想ウィンドウの内部タイトルを設定できます。

関連情報