Заголовок окна PS1 под PuTTY с экраном GNU

1696
BlakBat

В настоящее время я устанавливаю заголовок PS1, объединяя три переменные в моем .bashrc таким образом:

export TERMSERVER=`who am i | awk '' | tr -d ')''('` if [ -n "$TERMSERVER" ] ; then PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL] <-- $TERMSERVER' else PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL]' fi export PS1="$PS1_TITLE\n$PS1_LINE\n$PS1_PROMPT" 

Я также открываю несколько PuTTY и запускаю разные экраны GNU в каждом PuTTY, каждый с именем сеанса, например:

screen -T screen -U -S session-1 (in PuTTY #1) screen -T screen -U -S session-2 (in PuTTY #1) 

Мне бы очень хотелось, чтобы сессия-1 или сессия-2 появлялись в заголовке моего окна PuTTY, но я не могу найти правильную конфигурацию .screenrc для работы с тяжелыми строками . Я также не могу найти способ правильно сопоставить содержимое "/ var / run / screen / S-user" с моим текущим сеансом. Я попытался использовать $, но он потерпит неудачу, если в подоболочке.

Выдержка из моего текущего .screenrc:

# Every x seconds, requery window title  backtick 1 600 600 id -un   # The window's title  hardstatus ignore  # *** this is the current window title I use since I can't get what I want. hardstatus string "%1`@%H"   caption always  caption string "%{= KW}%-w%{= wk}%50>%n %t%{-}%+w%< %=%H %l" 

Есть ли способ получить то, что я хочу?

4
Версии экрана: - Версия экрана 4.00.03 (FAU) 23 октября 2006 г. - Версия экрана 4.00.03jw4 (FAU) 2 мая 2006 г. BlakBat 12 лет назад 0
Вы пытались спросить на форумах Ubuntu? Это больше похоже на то, о чем знали бы эти гуру. ppumkin 12 лет назад 0
@ppumkin: машины - CentOs и Debian. В любом случае, я предпочитаю спрашивать на StackOverflow, чем на форуме Ubuntu; Пользователи Ubuntu, вероятно, скрываются и здесь ;-) BlakBat 12 лет назад 0
Ну да, даже если его centos или wahteverOS-- Это все еще ядро ​​Linux - И нет; некоторые умные ребята из Ubuntu SE Linux не рискуют этой стороной, потому что они предназначены только для поддержки в Ubuntu (Linux). ppumkin 12 лет назад 0

1 ответ на вопрос

2
jaume

If you want that screen prints its session name on the PuTTY window title add this function to your .bashrc:

screen () { sessionname=$(echo $@ | fgrep -- '-S ' | sed 's/.*-S \([^ ]\+\).*/\1/'); echo -ne "\033]0;$\007"; command screen $@; echo -ne "\033]0;Putty\007" } 

Run screen as usual.

The function checks for an option called -S, extracts the session name, sets it with terminal escape sequences (or sets Putty if session name is empty) and runs the screen binary. When the screen binary exits, the PuTTY window title is reset to Putty.

Since seeing is believing :-) :

This is a Putty session ready to execute screen. Putty session ready to execute screen.

Inside a screen session. Notice the PuTTY window title. Inside a screen session. Title is screen session name.

Screen session ended. Title is reset. Screen session ended. Title is Putty.

Похожие вопросы