Відображення назви екранного сеансу GNU та заголовка вікна у запиті оболонки


11

Чи є спосіб відобразити назву сесії GNU Screen та заголовок вікна у запиті оболонки (скажімо, підказку Bash, визначену PS1)?

Відповіді:


14

Екран постачає деякі змінні середовища (з screen(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.
Арседж

Хоча це, ймовірно, підпадає під регістр перенумерування, чи є спосіб отримати доступ до імені вікна, якщо воно встановлено Ctrl-a A?
Таліс К.

1
Якщо GNU screenбув скомпільований за допомогою параметра -Q(запит), ви можете запустити деякі команди, такі як titleта windowsі мати відображення даних для складання, проте, без зворотного нового рядка.
Арседж

3

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

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.