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

Neg*_*_EV 25 gnu-screen

我运行"屏幕-S创建了多个屏幕会话每 ",我希望能够在状态显示栏的名字我用来创建当前屏幕会话.

但是,我似乎无法做到这一点.有任何想法吗?

小智 39

显示会话名称的最简单方法是

  C-a : 
  sessionname
Run Code Online (Sandbox Code Playgroud)

(之后没有指定名称sessionname)

请参阅手动屏幕中的"自定义"部分

  • 一个接一个地键入以下三个击键/命令:`Ctrl-A`然后`:`然后`sessionname`(Ctrl-A应该替换为你为屏幕控制键击设置的任何内容,如果你已经从屏幕控制击键改变它默认为Ctrl-A.)然后您将看到类似于以下内容的输出:`此会话名为'31438.Perlrocks'`. (3认同)

ram*_*ion 18

screen有两个状态栏,标题栏和hardstatus栏,它们都使用man屏幕的"STRING ESCAPES"部分中指定的字符串转义.不幸的是,没有直接引用会话名称的转义.

但是,有一个hack可以让你这样做.

screen使用$STY变量将会话名称传递给shell .当shell尝试设置窗口标题时(使用这些方法之一)screen捕获该尝试,并将其存储在令人困惑的称为"窗口hardstatus"的东西中,它确实有一个可以使用的转义:%h.

因此,如果您将caption或hardstatus栏设置为include %h并让shell尝试将窗口标题设置为$STY,则在%h显示栏时将替换为会话名称.


Scz*_*Scz 9

在当前版本中screen,有一个%Shardstatus线的标志.

MWE(.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"
Run Code Online (Sandbox Code Playgroud)

这将显示没有 ID 的会话名称(如${STY#*.}).

(同样的回答其他问题时这里这里的完整性).