这是我当前的 .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
参数会在指定的秒数后触发标题和硬状态字符串的自动刷新。仅使用输出的最后一行进行替换。
如果lifespan
和autorefresh
参数都为零,则反引号程序预计将停留在后台并偶尔生成输出。在这种情况下,该命令会立即执行,并且屏幕会存储最后一行输出。如果打印新行,屏幕将自动刷新硬状态或标题。该命令的第二种形式删除带有数字 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