31

我运行多个使用“screen -S name ”创建的屏幕会话,并且我希望能够在状态栏中显示我用于创建当前屏幕会话的名称。

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

4

8 回答 8

46

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

  C-a : 
  sessionname

(在 之后不指定名称sessionname

请参阅man 屏幕中的“自定义”部分

于 2012-04-05T09:18:01.373 回答
22

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

但是,有一个 hack 可以让你做到这一点。

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

因此,如果您将标题栏或 hardstatus 栏设置为 include %h,并且 shell 尝试将窗口标题设置为$STY,那么%h当显示栏时,将替换为会话名称。

于 2010-03-26T22:55:26.843 回答
14

In current versions of screen, there is a flag %S for the hardstatus line.

MWE (.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

This displays the session name without the ID (like ${STY#*.}).

(Same answer to other questions here and here for completeness).

于 2015-08-10T13:36:24.467 回答
3

从https://superuser.com/a/212520/151988转述,把它放到你的 ~/.screenrc 中;

screen 
screen $SHELL -c 'screen -X caption always "$STY"'
于 2014-06-16T15:26:59.417 回答
2

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

于 2012-11-07T16:47:31.077 回答
1

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

screen -S myscreen
C^a :title "myscreen"
于 2017-01-25T21:37:29.270 回答
0

正如 max_cantor 在SuperUser Answer中所说,应将会话名称的转义字符添加到版本 4.1.0。看起来转义字符功能是在 2008 年添加了一个相对较小的补丁。所以如果你有勇气,你可以自己 git 一个开发版本 4.1.0 的副本并尝试一下。

当我有机会时,我会尝试使用开发版本。

于 2013-01-04T22:37:00.250 回答
0

“screen -X sessionname” 我正在使用 ssh,我认为这是一个直接的答案,sessionname 将显示在屏幕底部

于 2022-02-17T03:46:41.537 回答