在PuTTY下使用GNU屏幕的PS1窗口标题


4

我目前通过以这种方式连接我的.bashrc中的三个变量来设置我的PS1标题:

export TERMSERVER=`who am i | awk '{print $NF}' | 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并在每个PuTTY中启动一个不同的GNU屏幕,每个屏幕都有一个会话名称,例如:

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

我很乐意看到 会话1 要么 会议-2 出现在我的PuTTY窗口标题中,但我找不到正确的.screenrc配置 hardstring 工作。 我也找不到一种方法来正确地将“/ var / run / screen / S-user”的内容映射到我当前的会话。我尝试使用$ {PPID},但如果在子shell中它会失败。

摘自我当前的.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.00.03(FAU)2006年10月23日 - 屏幕版本4.00.03jw4(FAU)2006年5月2日
BlakBat

您是否尝试过在Ubuntu论坛中提问?这看起来更像是大师们所知道的。
ppumkin

@ppumkin:机器是CentOs和Debian。无论如何,我更喜欢在StackOverflow上询问而不是在Ubuntu论坛上; Ubuntu用户可能也潜伏在这里;-)
BlakBat

好吧,即使它的centos或wahteverOS--它仍然是核心Linux - 而且没有;来自Ubuntu SE Linux的一些聪明人不敢冒险,因为他们只专注于Ubuntu(Linux)的支持。
ppumkin

Answers:


2

如果你想要那个 screen 在PuTTY窗口标题上打印其会话名称将此功能添加到您的 .bashrc

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

像往常一样运行屏幕。

该函数检查名为-S的选项,提取会话名称,使用终端转义序列设置它(如果会话名称为空,则设置Putty)并运行 screen 二进制文件。当。。。的时候 screen 二进制退出,PuTTY窗口标题重置为Putty。

因为眼见为实:-):

这是一个准备执行屏幕的Putty会话。 Putty session ready to execute screen.

在屏幕会话内。注意PuTTY窗口标题。 Inside a screen session. Title is screen session name.

屏幕会话结束。标题被重置。 Screen session ended. Title is Putty.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.