mostra la batteria nel prompt e la aggiorna dopo ogni comando

1

Ho appena installato Lion, e sono in procinto di vedere il mio sistema. sto usando questa funzione (trovata da qualche parte online ...) per mostrarla nel prompt:

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%
}

E ho generato il mio prompt in questo modo:

_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

Tuttavia, dal momento che Lion, la parte della batteria non viene aggiornata ogni volta che viene visualizzata nuovamente la richiesta. Ad esempio, se eseguo un ls e attendo che la batteria si scarichi e poi esegua un altro comando nella stessa finestra, senza avere re origine il mio .bashrc , la batteria rimane la stessa. Qualcuno sa come aggiornarlo senza dover utilizzare il mio .bashrc file di risorse ogni volta?

(A proposito, questo è come appare il mio prompt.)

    
posta Aliou 11.08.2011 - 03:49
fonte

2 risposte

1

La sceneggiatura sopra è così terribilmente scritta che mi fa venire le lacrime agli occhi. Considerando che lo stai eseguendo ad ogni prompt, potresti non voler sborsare così tanto.

Awk può fare tutto quanto sopra in una riga:

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

(scusa, non abbastanza reputazione per commentare o l'avrei fatto invece)

    
risposta data 18.08.2011 - 18:43
fonte
1

Devi scappare, se vuoi che venga ripetuto ogni volta che viene chiamato. Può essere fatto facilmente con il simbolo del dollaro.

_PS1battery="\$(battery_status)"
    
risposta data 11.08.2011 - 20:02
fonte

Leggi altre domande sui tag