如何将会话名称添加到屏幕状态显示中?

如何将会话名称添加到屏幕状态显示中?

这是我当前的 .screenrc 文件,大部分是从代码中的链接复制的

#First iteration 2014-09-06, not quite sure of stuff to add
# got a fancy hardstatus line noted below
hardstatus on
hardstatus alwayslastline
# hardstatus string "%w"

# blagged this hardstatus like from https://bbs.archlinux.org/viewtopic.php?id=55618, not quite sure what it does
hardstatus string '%{= kG}%{C}Screen: %{c}%{= kG}[%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{C} %d-%m %{W}%c %{g}]'

我现在希望会话名称也出现在其中,我已经确定的名称来自这个答案 -https://superuser.com/questions/212392/how-to-include-screens-session-name-in-hardstatus/212520#212520

解决方案遵循以下思路:

hardstatus string '%H:%`'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

这是我不熟悉的领域,我想知道该backtick命令如何适应其中,即它是否screen根本是一个命令。

答案1

你可以检查或者更好的是,您可以检查哪个man页面screen是一个很好的参考,并说:

反引号id 生命周期自动刷新 cmd 参数...
反引号ID

使用数字 id id 编写反引号命令。此类命令的输出用于替换“%`”字符串转义符。指定的lifespan是输出被视为有效的秒数。在此时间之后,如果遇到相应的字符串转义,则再次运行该命令。该autorefresh参数会在指定的秒数后触发标题和硬状态字符串的自动刷新。仅使用输出的最后一行进行替换。
如果lifespanautorefresh参数都为零,则反引号程序预计将停留在后台并偶尔生成输出。在这种情况下,该命令会立即执行,并且屏幕会存储最后一行输出。如果打印新行,屏幕将自动刷新硬状态或标题。该命令的第二种形式删除带有数字 id 的反引号命令。

根据您的示例,您可以添加:

hardstatus string '%H:%1` | %2`'
backtick 1 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'
backtick 2 60 60 /usr/bin/uptime

相关内容