在 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
现在按screen
Ctrl-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”中添加了一个额外的空格,以便在视觉上与显示为脚本输出的空格相匹配。