动态更改屏幕“硬状态”颜色

动态更改屏幕“硬状态”颜色

hardstatus我在屏幕上显示硬盘可用空间。但我也想在它小于提醒我的值时更改该值的颜色。
我已经编写了一个脚本来检查这一点,如果为真则返回一个字符串,如果为假则不返回任何内容。
但问题是改变屏幕的颜色hardstatus。这是行:

hardstatus alwayslastline "%?%27`%{+B r}%?Velocidad"

硬状态有效,但我不会显示脚本检查的输出(%27),仅更改颜色。但%?需要一个非空字符串来执行此操作。我怎样才能做到这一点?

答案1

找不到真正的解决方案,但如果您可以忍受hardstatus行中的一个额外空格,则有一种解决方法:根据命令行参数使脚本以两种模式运行。

  • 在检查模式下,当您想要更改颜色时(例如,当磁盘已满时),仅回显一个空格。
  • 在正常模式下,回显您想要显示的可用空间或填充率。

然后你可以在你的.screenrc

backtick 1 1 1 /tmp/script.sh check
backtick 2 1 1 /tmp/script.sh normal
hardstatus alwayslastline "%?%1`%{r}%: %?%2`"

这个想法是使用else( %:) 子句始终输出相同数量的字符,这样状态行就不会跳来跳去,并使用脚本的两次调用(一次调用可选择更改颜色,一次将实际值打印到展示)。

我使用此脚本进行了测试,以确保它有效:

#! /bin/bash
secs=$(date +%s)
if [ "${1:-check}" = "check" ] ; then
    if (( $secs % 2 == 0 )) ; then
        echo " "
    fi
    exit 0
fi
echo $secs

这样,该hardstatus行就以红色显示当前时间(自 1970 年 1 月 1 日起以秒为单位,非常实用......),以红色表示偶数秒,以正常颜色表示奇数秒。

相关内容