Bash ansi escape codes

From wikinotes
Revision as of 16:22, 25 December 2021 by Will (talk | contribs) (→‎Colours)

Terminals are controled ansi escape sequences.
These sequences vary from terminal to terminal.
The tput command uses your terminal's termcap library to expose a common interface.

Colours

See list of colours https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit

echo -e '\e[32m'     #
echo -e '\e[m'       # reset colour

tput setab 7 # set bg colour
tput setaf 7 # set fg colour
tput bold    # set bold
tput sgr0    # reset colours

yellow=$(tput setaf 3)
echo "${yellow}foo"

I usually do something like this for help text

setup_colours() {
    if [ $(tput colors) -gt 8 ] ; then
        C=$(tput setaf 6)  # code
        H=$(tput setaf 3)  # heading
        E=$(tput setaf 1)  # error
        B=$(tput bold)     # bold
        R=$(tput sgr0)     # reset
    else
        C=$(tput sgr0)
        H=$(tput sgr0)
        E=$(tput sgr0)
        B=$(tput sgr0)
        R=$(tput sgr0)
    fi
}