我运行多个屏幕会话,每个会话都使用'screen -S 名称 '创建,我希望能够在状态栏中显示 名称 我曾经创建过当前的屏幕会话。
然而,我似乎无法做到这一点。有什么想法吗?
答案 0 :(得分:36)
答案 1 :(得分:18)
screen
有两个状态栏,标题栏和hardstatus栏,两者都使用man screen的“STRING ESCAPES”部分中指定的字符串转义符。不幸的是,没有直接引用会话名称的转义。
然而,有一个黑客可以让你这样做。
screen
使用$STY
变量将会话名称传递给shell。当shell尝试设置窗口标题时(使用one of these methods)screen
捕获该尝试,并将其存储在令人困惑的称为“窗口hardstatus”的内容中,它确实有一个可以使用的转义: %h
。
因此,如果您将标题或hardstatus栏设置为包含%h
并让shell尝试将窗口标题设置为$STY
,则%h
将替换为{{1}}显示栏时的会话名称。
答案 2 :(得分:9)
在当前版本的screen
中,hardstatus行有一个标记%S
。
MWE(.screenrc):
hardstatus on
hardstatus alwayslastline
hardstatus string "%S"
这会显示会话名称,但不包含 ID(例如${STY#*.}
)。
答案 3 :(得分:2)
超级用户有一个不需要$STY
的答案,而是使用backtick
屏幕配置命令和screen -ls
:https://superuser.com/a/212520
答案 4 :(得分:2)
从https://superuser.com/a/212520/151988转述,将其放入〜/ .screenrc;
screen
screen $SHELL -c 'screen -X caption always "$STY"'
答案 5 :(得分:1)
如果没有其他工作(对我而言),作为一种解决方法,您可以创建一个数字为0的窗口并将标题设置为您的屏幕名称:
screen -S myscreen
C^a :title "myscreen"
答案 6 :(得分:0)
正如max_cantor在SuperUser Answer中所说,会话名称的转义字符应添加到版本4.1.0。 It looks like转义字符功能在2008年添加了一个相对较小的补丁。所以,如果你感觉很勇敢,你可以给自己一个开发版本4.1.0的副本并试一试。
当我有机会时,我会用开发版试试这个。