• # Prompt bash sur 2 lignes.

    Posté par . En réponse au journal Des "basheries". Évalué à 1.

    Voici le prompt bash sur 2 lignes que j'utilise depuis quelques années
    Je trouve très pratique de séparer les informations et la commande.

    Il utilise le mode 256 couleurs qui doit maintenant fonctionner à peu près partout (sauf dans la console linux). Il rend mieux sur un terminal de couleur sombre.

    Les variables PROMPT_MODE, PROMPT_MODE_COLOR et PROMPT_COLOR peuvent être modifiées dynamiquement.

    La fonction show256colors affiche les 256 couleurs disponibles (pour PROMPT_MODE_COLOR et PROMPT_COLOR )

    PROMPT_MODE="none" # Un texte arbitraire inséré dans le prompt
    PROMPT_MODE_COLOR=36 # La couleur de ce texte (0-255)
    PROMPT_COLOR=46 # La couleur de la barre de gauche
    function set-prompt () {
     # reminder: xterm escape sequences must be encapsulated within \[ \].
     # This is needed by bash to compute the 'visible' length of 
     # the prompt 
     local col0="\[\e[0m\]" # reset 
     local col1="\[\e[1;31m\]" # pwd color 
     local col2="\[\e[48;5;${PROMPT_COLOR}m\]" # left margin color
     local col3="\[\e[1;33m\]" # [user@host] color
     local col4="\[\e[38;5;${PROMPT_MODE_COLOR}m\]" # color of $PROMPT_MODE 
     PS1="\n$col2 $col0 $col3[\u@\h] $col4$PROMPT_MODE${PROMPT_MODE:+ }$col0$col1\w$col0 \n$col2 $col0 "
    }
    PROMPT_COMMAND=set-prompt
    function show256colors () {
     for ((i=0;i<16;i++)) ; do 
     for ((j=0;j<16;j++)) ; do 
     COL=$((i*16+j)) ; 
     printf "$(tput setaf $COL)%3d$(tput sgr0) $(tput setab $COL)%3d$(tput sgr0) " $COL $COL ; 
     done 
     echo 
    done
    }