bash tip: prompt furbo e colorato!

Categorie: 

Data la sua natura sia libera che aperta (FLOSS) la storica shell GNU bash (Bourne-Again SHell, notare il gioco di parole ;-)) si è man mano diffusa su una moltitudine di sistemi operativi diversi, principalmente e comprensibilmente nelle varie salse di UNIX (Linux, AIX, *BSD, MacOSX, Solaris) ma anche, e perché no, in Windows (tramite CygWin).

Dovunque la si utilizzi ecco una piccola ricetta che ho trovato molto utile per migliorare l’aspetto del suo invito-comandi (alias prompt), non solo per avere una più immediata leggibilità ma anche per ottenere un riscontro istantaneo sull’efficacia del comando appena impartito (il famigerato return-code AKA echo $?). Inserendo la funzione seguente nel file di partenza della shell (~/.bashrc) si ottiene l’effetto magico:

function prompt
{
    local LWHITE="[\033[1;37m]"
    local YELLOW="[\033[1;33m]"
    local BROWN="[\033[0;33m]"
    local MAGENTA="[\033[0;35m]"
    local GREEN="[\033[0;32m]"
    local RED="[\033[0;31m]"
    local CYAN="[\033[0;36m]"
    local GRAY="[\033[0;37m]"
    local BLUE="[\033[0;34m]"
    local WHITE="[\033[0;00m]"
    local HOSTCOL="`if [[ \$? = "0" ]]; then echo '${GREEN}\h'; else echo '${RED}\h' ; fi`"
    export PS1="${BLUE}\u${BROWN}@${HOSTCOL}${MAGENTA}:${CYAN}\w${WHITE}\$ "
}
prompt

Notare che la funzione dichiarata viene invocata subito dopo, altrimenti non avrebbe effetto!

screenshot

la bash a colori!

Utente, nome-host, e working-directory risaltano di più grazie ai colori e in particolare il colore dell’hostname cambia da verde a rosso a seconda del risultato positivo o negativo del comando appena dato. Utile e dilettevole allo stesso tempo, no? Wink

Commenti