在 GNU 屏幕的状态行中添加条件格式

在 GNU 屏幕的状态行中添加条件格式

在 GNU screen 的状态中,可以输入条件性内容,例如

%?%F%{+b r}%:%{+b b}%?

%F 是测试;如果为真,则打开粗体红色格式 %{+br},而如果为假,则打开粗体蓝色格式 %{+bb}。

带有 %F 的这种条件语句(用于测试焦点)是我在 .screenrc 文件示例或屏幕手册中见过的唯一的条件语句。

还可以使用哪些其他条件语句?手册上说:
“只有当部分内的‘%’转义扩展为非空字符串时,才会显示下一个‘%?’的部分”,这有点令人困惑。例如,我可以根据一天中的时间或一周中的某天更改颜色吗?

谢谢

答案1

创建一个脚本,当条件为真时输出一些内容。此示例将在时间介于上午 9 点至下午 4:59 之间时输出一个空格。

#!/bin/bash
time=$(date +%H)
if (( time >= 9 && time <= 16 ))
then
    echo " "
fi

保存此脚本。我们将其命名为“screenbtdaytime”。此外,执行chmod u+x screenbtdaytime(或+x不执行u)以使其可普遍执行。

为了演示这一点,请使用此行代替if上面的代码,以便每 10 秒发生一次更改,这样您就不必等待一整天才能看到效果:

if (( $(date +%s) / 10 % 2 ))    # temporary for demo

现在按screenCtrl-a 并打开命令提示符并输入以下两个命令:

backtick 1 0 1 /path/to/screenbttime
caption always "%?%{+b by}%1`%:%{+b yb} %?%C | %D, %M %d, %Y"

我相信,如果您愿意,您可以使用hardstatus它来代替。caption

0将命令60中的更改backtick为将使更新每分钟发生一次而不是按照默认速率进行。

这会将脚本分配给反引号命令 1(第一个“1”),该命令用于您看到的标题中%1`。您可以将其他命令与其他数字相关联,这样您就可以进行多项操作。

由于脚本在指定时间内输出空格,因此它会触发条件%?,该条件设置为在黄色背景上输出蓝色文本的颜色代码。%:当脚本没有输出且颜色为蓝色背景上的黄色时,将执行“else”部分()。在“else”中添加了一个额外的空格,以便在视觉上与显示为脚本输出的空格相匹配。

相关内容