我运行多个使用“screen -S name ”创建的屏幕会话,并且我希望能够在状态栏中显示我用于创建当前屏幕会话的名称。
但是,我似乎无法做到这一点。有任何想法吗?
screen
有两个状态栏,标题栏和 hardstatus 栏,它们都使用man screen的“STRING ESCAPES”部分中指定的字符串转义。不幸的是,没有直接引用会话名称的转义。
但是,有一个 hack 可以让你做到这一点。
screen
$STY
使用该变量将会话名称传递给 shell 。当 shell 尝试设置窗口标题(使用这些方法之一)screen
时,会捕获该尝试,并将其存储在它令人困惑地称为“窗口硬状态”的东西中,它确实有一个您可以使用的转义:%h
.
因此,如果您将标题栏或 hardstatus 栏设置为 include %h
,并且 shell 尝试将窗口标题设置为$STY
,那么%h
当显示栏时,将替换为会话名称。
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).
从https://superuser.com/a/212520/151988转述,把它放到你的 ~/.screenrc 中;
screen
screen $SHELL -c 'screen -X caption always "$STY"'
超级用户对此有一个不需要的答案$STY
,而是使用backtick
屏幕配置命令和screen -ls
:https ://superuser.com/a/212520
如果没有其他方法(对我而言),作为一种解决方法,您可以创建一个编号为 0 的窗口并将标题设置为您的屏幕名称:
screen -S myscreen
C^a :title "myscreen"
正如 max_cantor 在SuperUser Answer中所说,应将会话名称的转义字符添加到版本 4.1.0。看起来转义字符功能是在 2008 年添加了一个相对较小的补丁。所以如果你有勇气,你可以自己 git 一个开发版本 4.1.0 的副本并尝试一下。
当我有机会时,我会尝试使用开发版本。
“screen -X sessionname” 我正在使用 ssh,我认为这是一个直接的答案,sessionname 将显示在屏幕底部