Cambiar el color de la pantalla "hardstatus" dinámicamente

hardstatus espacio libre en el disco duro en la pantalla de hardstatus . Pero también quiero cambiar el color de este valor cuando es less que un valor para alertarme.
He hecho un script que comtesting esto y devuelve una cadena si es verdadera o nada si es falsa.
Pero el problema es cambiar el color en la pantalla de hardstatus . Esta es la línea:

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

El hardstatus funciona pero no mostraré el resultado de la verificación del script (% 27), solo cambiaré el color. Pero %? necesita una cadena no vacía para hacer esto. ¿Cómo puedo hacer esto?

No se puede encontrar una solución real para esto, pero hay una solución alternativa si puede vivir con un espacio adicional en la línea de su hardstatus : haga que su secuencia de commands se ejecute en dos modos, en function de un argumento de línea de command.

  • En el modo de comprobación, repita solo un espacio cuando desee cambiar el color (por ejemplo, cuando el disco está lleno).
  • En el modo normal, repita el espacio libre o la tasa de relleno que desea mostrar.

Entonces puedes hacer algo como esto en tu .screenrc :

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

La idea es usar la cláusula else ( %: 🙂 para generar siempre el mismo número de caracteres para que la línea de estado no salte y usar dos invocaciones del guión (una para get el color opcionalmente modificado, otra para imprimir el valor real para mostrar).

Probé esto con este script, solo para asegurarme de que funciona:

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

Con eso, la línea hardstatus da la hora actual (en segundos desde 01/01/1970, muy práctica …) en rojo por incluso segundos, o en color normal para los segundos impares.