Verder Terug Inhoud

10. Dynamisch Laden van Prompt Kleuren

10.1 Een "Proof of Concept" Voorbeeld

Dit is meer een "proof of concept" dan een attractieve prompt: het dynamisch wijzigen van de kleuren in een prompt. In het voorbeeld wijzigt de kleur van de hostnaam afhankelijk van de load (als een waarschuwing).


#!/bin/bash
#   "hostloadcolour" - 17 October 98, door Giles
#
#   De gedachte hier is de kleur van de hostnaam in de prompt te wijzigen,
#   afhankelijk van de grens van een load waarde.

# THRESHOLD_LOAD is de waarde van de een minuut load (vermenigvuldigd
# met honderd) waarop je wilt dat de prompt
# wijzigt van COLOUR_LOW naar COLOUR_HIGH
THRESHOLD_LOAD=200
COLOUR_LOW='1;34'
          # lichtblauw
COLOUR_HIGH='1;31'
           # lichtrood

function prompt_command {
ONE=$(uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g")
#   Apparently, "scale" in bc doesn't apply to multiplication, but does
#   apply to division.
ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc)
if [ $ONEHUNDRED -gt $THRESHOLD_LOAD ] 
then 
    HOST_COLOUR=$COLOUR_HIGH
        # Lichtrood
else
    HOST_COLOUR=$COLOUR_LOW
        # Lichtblauw
fi
}

function hostloadcolour {

PROMPT_COMMAND=prompt_command
PS1="[$(date +%H%M)][\u@\[\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0m\]:\w]$ "
}

Sla dit met je favoriete editor op in een bestand met de naam "hostloadcolour". Als je het Bashprompt package hebt geïnstalleerd, zal dit als een theme werken. Typ source hostloadcolour en vervolgens hostloadcolour als dit niet zo is. In beide gevallen wordt "prompt_command" een functie in je omgeving. Als je de code bestudeert, zul je opmerken dat de kleuren ($COLOUR_HIGH en $COLOUR_LOW) zijn ingesteld door slechts gebruik te maken van een gedeeltelijke kleurcode, d.w.z. "1;34" in plaats van "\[\033[1;34m\]", waar ik de voorkeur aan zou hebben gegeven. Het lukte me niet om het met de complete code aan het werk te krijgen. Laat het me alsjeblieft weten als je het voor elkaar krijgt.


Verder Terug Inhoud