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 日起以秒为单位,非常实用......),以红色表示偶数秒,以正常颜色表示奇数秒。