Questa è una dimostrazione del concetto piuttosto che un prompt attraente: cambiare i colori all'interno di un prompt dinamicamente. In questo esempio, il colore dell'hostname cambia in funzione del carico (come un avvertimento).
#!/bin/bash
# "hostloadcolour" - 17 ottobre 98, Giles
#
# Qui l'idea e` di cambiare il colore dell'hostname nel prompt, a
# seconda del valore del carico.
# THRESHOLD_LOAD e` il valore del carico per un minuto (moltiplicato
# per cento) al quale volete che il prompt cambi da COLOUR_LOW a
# COLOUR_HIGH
THRESHOLD_LOAD=200
COLOUR_LOW='1;34'
# blu chiaro
COLOUR_HIGH='1;31'
# rosso chiaro
function prompt_command {
ONE=$(uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g")
# A quanto pare, "scale" in bc non funziona con la moltiplicazione,
# ma funziona con la divisionone.
ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc)
if [ $ONEHUNDRED -gt $THRESHOLD_LOAD ]
then
HOST_COLOUR=$COLOUR_HIGH
# rosso chiaro
else
HOST_COLOUR=$COLOUR_LOW
# blu chiaro
fi
}
function hostloadcolour {
PROMPT_COMMAND=prompt_command
PS1="[$(date +%H%M)][\u@\[\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0;37m\]:\w]$ "
}
Usando il vostro editor preferito, salvate queso in un file chiamato
"hostloadcolour". Se avete il pacchetto Bashprompt installato, Questo
funzionerà come un tema. Se no, digitate source
hostloadcolour
e poi hostloadcolour
. In entrambi i
modi, "prompt_command" diventa una funzione nel vostro ambiente. Se
esaminate il codice, noterete che i colori ($COLOUR_HIGH e
$COLOUR_LOW) sono impostati usanto solo un codice del colore parziale,
cioè "1;34" invece di "\[\033[1;34m\]", che avrei
preferito. Non sono stato in grado di farlo funzionare con il codice
completo. Siete pregati di farmi sapere se doveste riuscirvi.