muestra la batería en el indicador y la actualiza después de cada comando

1

Acabo de instalar Lion, y estoy en proceso de ver mi sistema. Estoy usando esta función (encontrada en algún lugar en línea ...) para mostrarla en el indicador:

battery_status()
{
    maxcap='ioreg -l | grep Capacity | awk '/MaxCapacity/{print $5}''
    curcap='ioreg -l | grep Capacity | awk '/CurrentCapacity/{print $5}''

    curcap='echo $curcap*1000|bc'
    proc='echo $curcap / $maxcap |bc';

    len='echo ${#proc}';

    proc_num=${proc:0:3}
    proc_dec=${proc:3:4}

    proc_num_len='echo ${#proc_num}';

    if [ $proc_num_len == "3" ]; then
            if [ $proc_num != "100" ]; then
                    proc_num=${proc:0:2}
                    proc_dec=${proc:2:3}
            fi
    fi

    echo $proc_num.$proc_dec%
}

Y genero mi prompt como este:

_PS1user="\u@"
_PS1host="$txtred\h"
_PS1time="$txtwht | \t | "
_PS1battery="'battery_status'"
_PS1end="$txtrst\n\w › "

export PS1="$_PS1user$_PS1host$_PS1time$_PS1battery$_PS1end"

unset _PS1user _PS1host _PS1time _PS1battery _PS1end

Sin embargo, desde Lion, la parte de la batería no se actualiza cada vez que aparece nuevamente el indicador. Por ejemplo, si hago un ls y espero a que la batería se agote y luego hago otro comando en la misma ventana, sin tener que volver a fuente mi .bashrc , la batería permanece igual. ¿Alguien sabe cómo actualizarlo sin tener que proporcionar mi archivo .bashrc con recursos cada vez?

(Por cierto, esta es la forma en que se ve mi mensaje).

    
pregunta Aliou 11.08.2011 - 03:49

2 respuestas

1

El guión anterior está tan terriblemente escrito que trae lágrimas a mis ojos. Teniendo en cuenta que lo está ejecutando en cada indicador, es posible que no desee bifurcar tanto.

Awk puede hacer todo lo anterior en una sola línea:

ioreg -l | awk '/MaxCapacity/ {max=$5} /CurrentCapacity/ {cur=$5} END {printf "%.1f%%", cur/max*100}'

(lo siento, no tengo suficiente reputación como para comentar o lo habría hecho en su lugar)

    
respondido por el Ingmar Hupp 18.08.2011 - 18:43
1

Tienes que escapar de él, si quieres que se vuelva a ejecutar cada vez que se llame. Se puede hacer más fácilmente con el signo de dólar.

_PS1battery="\$(battery_status)"
    
respondido por el johankj 11.08.2011 - 20:02

Lea otras preguntas en las etiquetas