Esto es una «prueba de concepto» más que un prompt bonito: cambio de colores en el prompt dinámicamente. En este ejemplo, el color del nombre del host cambia dependiendo de la carga (a modo de aviso).
#!/bin/bash
# "hostloadcolour" - 17 Octubre 98, by Giles
#
# La idea aqui es cambiar el color del nombre del host en el prompt
# dependiendo de un valor de carga que sirve de umbral.
# THRESHOLD_LOAD es el valor de la carga en un minuto
# (multiplicado por 100) al cual se desea que el prompt
# cambie de COLOUR_LOW a COLOUR_HIGH
THRESHOLD_LOAD=200
COLOUR_LOW='1;34'
# light blue
COLOUR_HIGH='1;31'
# light red
function prompt_command {
ONE=$(uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g")
# Aparentemente "scale" en bc no se aplica a las multiplicaciones
# pero si a las divisiones
ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc)
if [ $ONEHUNDRED -gt $THRESHOLD_LOAD ]
then
HOST_COLOUR=$COLOUR_HIGH
# Light Red
else
HOST_COLOUR=$COLOUR_LOW
# Light Blue
fi
}
function hostloadcolour {
PROMPT_COMMAND=prompt_command
PS1="[$(date +%H%M)][\u@\[\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0;37m\]:\w]$ "
}
Mediante su editor favorito, salve esto en un fichero llamado
hostloadcolour
. Si tiene instalado el paquete Bash Prompt
,
funcionará como un tema. Si no lo tiene, escriba source
hostloadcolour
seguido de hostloadcolour
. De cualquiera de las dos
formas, prompt_commad
se convierte en una función del entorno. Si
examina el código, notará que los colores ($COLOUR_HIGH y
$COLOUR_LOW
) se ponen mediante un código parcial de color, es decir,
1;34
en lugar de \[\033[1;34m\]
, cosa que hubiera preferido,
pero no he sido capaz de que funcione con el código completo. Le
agradecería que me avisara si lo consigue.