Экранная команда устанавливает заголовок оболочки на текущее имя хоста

Экранная команда устанавливает заголовок оболочки на текущее имя хоста

Я хотел бы знать, как мне установить заголовок оболочки на имя хоста, на котором мы сейчас находимся. Мой сценарий такой. Я вхожу на хост 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 screen заключается в том, что одно окно терминала может содержать несколько виртуальных окон. В этом случае вы можете использовать другую escape-последовательность ( \033k%s\033\\), чтобы задать внутренний заголовок одного виртуального окна.

Связанный контент