A "Proof of Concept" Example

Bash Prompt HOWTO:
Prev | Chapter 10. Loading Prompt Colours Dynamically | Next

# 10.1. A "Proof of Concept" Example

This is a "proof of concept" more than an attractive prompt: changing colours within the prompt dynamically. In this example, the colour of the host name changes depending on the load (as a warning).

    #!/bin/bash
    #   "hostloadcolour" - 17 October 98, by Giles
    #
    #   The idea here is to change the colour of the host name in the prompt,
    #   depending on a threshold load value.

    # THRESHOLD_LOAD is the value of the one minute load (multiplied
    # by one hundred) at which you want
    # the prompt to change from COLOUR_LOW to 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")
    #   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
    	# 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[0m\]:\w]$ "
    }

Using your favorite editor, save this to a file named "hostloadcolour". If you have the Bashprompt package installed, this will work as a theme. If you don't, type `source hostloadcolour` and then `hostloadcolour`. Either way, "prompt_command" becomes a function in your environment. If you examine the code, you will notice that the colours ($COLOUR_HIGH and $COLOUR_LOW) are set using only a partial colour code, ie. "1;34" instead of "\[\033[1;34m\]", which I would have preferred. I have been unable to get it to work with the complete code. Please let me know if you manage this.

Prev | Home | Next
Loading Prompt Colours Dynamically | Up | Prompt Code Snippets