Отображение имени сеанса экрана GNU и заголовка окна в командной строке


11

Есть ли способ представить имя сеанса экрана GNU и заголовок окна в приглашении оболочки (скажем, приглашение Bash, определенное как PS1)?

Ответы:


14

Screen предоставляет некоторые переменные окружения (из screenman-страницы (1)):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

«Во время создания» означает, что если вы перенумеруете окно (используя numberкоманду экрана ), оболочка не будет уведомлена об изменении, и $ WINDOW останется таким же, как и номер первого окна.

Вы можете использовать что-то вроде:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
Отлично! Это то, что я искал. Кстати, есть способ получить заголовок окна вместо номера окна?
Brandizzi

Не то, чтобы я знал, нет api для экрана, и когда вы вводите команды, нет вывода - он переходит в текущее окно на экране. Например screen -xr 2466 -X windows.
Arcege

Хотя это, вероятно, относится к случаю перенумерации, есть ли способ получить доступ к имени окна, если оно установлено с Ctrl-a A?
Талис К.

1
Если GNU screenбыл скомпилирован с -Qопцией (query), то вы можете запускать некоторые команды, такие как titleи, windowsи выводить данные на стандартный вывод, однако без завершающей строки.
Arcege

3

Я всегда использую точные имена сеансов экрана. Затем я могу добавить STY env var экрана с вычеркнутым числовым идентификатором (спасибо dimo414) к PS1. Я не украшаю его фигурными скобками или чем-то еще, потому что я не всегда на сессии. Простой пример:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

Я использую это:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

удаляет номер процесса из ${STY}
включает номер окна (как упоминалось "во время создания")
включает заголовок окна (как возвращено из screen -Q title)

заметки:

  • в первый раз запускается, screen -Qждет возврата
  • я установил заголовок окна с помощью CA CA, а затем поставил свой .profile, чтобы обновить приглашение

5
Использование ${STY#[0-9]*.}позволяет избежать необходимости проходить через него sed.
dimo414
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.