代码之家  ›  专栏  ›  技术社区  ›  Neg_EV

如何在状态栏中显示屏幕会话的当前“会话”名称或“sockname”?

  •  21
  • Neg_EV  · 技术社区  · 16 年前

    我运行多个屏幕会话,每个会话都用“screen-s”创建 名称 '我希望能够在状态栏中显示 名称 我曾经创建过当前的屏幕会话。

    然而,我似乎无法做到这一点。有什么想法吗?

    7 回复  |  直到 16 年前
        1
  •  17
  •   rampion    16 年前

    screen 有两个状态栏,标题栏和硬状态栏,它们都使用在的“字符串转义”部分中指定的字符串转义。 man screen . 不幸的是,没有直接引用会话名称的转义。

    然而,有一个黑客可以让你做到这一点。

    屏幕 使用将会话名称传递给shell $STY 变量。当shell尝试设置窗口标题时(使用 one of these methods ) 屏幕 捕获该尝试,并将其存储在一个它称之为“窗口硬状态”的令人困惑的东西中,该窗口确实有一个转义,您可以使用: %h .

    因此,如果将标题或硬状态栏设置为包含 %H 并让shell尝试将窗口标题设置为 $STY 然后 %H 将在显示栏时替换为会话名称。

        2
  •  35
  •   nicola    14 年前

    显示sessionname的最简单方法是

      C-a : 
      sessionname
    

    (后面不指定名称) sessionname )

    请参见中的“自定义”部分 man screen

        3
  •  9
  •   Community Mohan Dere    9 年前

    在的当前版本中 screen ,有一个标志 %S 用于硬状态行。

    MWE(.screenrc):

    hardstatus on
    hardstatus alwayslastline
    hardstatus string "%S"
    

    这将显示会话名称 没有 身份证(比如 ${STY#*.} )

    (其他问题的答案相同) here here 为了完整性)。

        4
  •  2
  •   Community Mohan Dere    9 年前

    超级用户对此有一个不需要的答案 $STY ,而不是使用 backtick 屏幕配置命令和 screen -ls : https://superuser.com/a/212520

        5
  •  2
  •   Community Mohan Dere    9 年前

    引自 https://superuser.com/a/212520/151988 把这个放进你的~/.screenrc;

    screen 
    screen $SHELL -c 'screen -X caption always "$STY"'
    
        6
  •  1
  •   Dennis Golomazov    9 年前

    如果没有其他功能(对我而言)起作用,作为解决方法,您可以创建一个数字为0的窗口,并将标题设置为您的屏幕名称:

    screen -S myscreen
    C^a :title "myscreen"
    
        7
  •  0
  •   Community Mohan Dere    9 年前

    正如Max_Cantor在 SuperUser Answer ,应在4.1.0版中添加会话名称的转义符。 It looks like 转义字符函数在2008年添加了一个相对较小的补丁。所以,如果你觉得勇敢,你可以给自己一份开发版本4.1.0的副本,然后试试看。

    当我有机会的时候,我会用开发版本来尝试这个。

    推荐文章