Ответы:
Screen предоставляет некоторые переменные окружения (из screen
man-страницы (1)):
STY Alternate socket name.
WINDOW Window number of a window (at creation time).
«Во время создания» означает, что если вы перенумеруете окно (используя number
команду экрана ), оболочка не будет уведомлена об изменении, и $ WINDOW останется таким же, как и номер первого окна.
Вы можете использовать что-то вроде:
PS1='\u@\h(${STY}:${WINDOW}):\w$ '
screen -xr 2466 -X windows
.
Ctrl-a A
?
screen
был скомпилирован с -Q
опцией (query), то вы можете запускать некоторые команды, такие как title
и, windows
и выводить данные на стандартный вывод, однако без завершающей строки.
Я всегда использую точные имена сеансов экрана. Затем я могу добавить STY env var экрана с вычеркнутым числовым идентификатором (спасибо dimo414) к PS1. Я не украшаю его фигурными скобками или чем-то еще, потому что я не всегда на сессии. Простой пример:
PS1='\u@\h ${STY#[0-9]*.} \w$ '
Я использую это:
(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)
удаляет номер процесса из ${STY}
включает номер окна (как упоминалось "во время создания")
включает заголовок окна (как возвращено из screen -Q title
)
заметки:
screen -Q
ждет возврата${STY#[0-9]*.}
позволяет избежать необходимости проходить через него sed
.