Flyounet : (Digital|Real)? life

Une sorte de journal quotidien, mais en vachement plus espacé dans le temps

Petit update pour mon prompt

Rédigé le . Édité le .

Dans ce que je présentais précédemment au sujet de mon .bashrc, je ne sais pas si ça vous a plu, mais il y a une chose qui m'énerve. En effet, je me suis rendu compte à force d'utiliser git que l'état de mon repository, ainsi que la branche sur laquelle j'étais, m'obligeaient à régulièrement faire un git status.

Alors pour ceux qui connaissent ma fainéantise, j'ai updaté mon prompt pour faire ça à ma place :

function gitB() {
  LANG=C git status 2>&1 | awk 'BEGIN {b=c=0;} /^On branch/ {b="[" $NF "] ";} /working directory clean/ {c=1;} END {if (b!=0){if (c!=0) print "\[\e[1;32m\]" b; else print "\[\e[1;31m\]" b;}}'
}
function puser() {
  echo -ne "$CYAN( $( LANG=C last | awk '$0 ~ /still logged in/ && $2 ~ /'"$(tty |awk -F'/' '{print $3}')"'/ && $2 ~ /'"$(tty |awk -F'/' '{print $4}')"'/ {if (a == "") {a=$1;print;};}' | awk '{print $1}' ))"
}
PROMPT_COMMAND='if [ ${?} -eq 0 ]; then rcl="${LIGHT_CYAN}"; else rcl="${RED}"; fi; \
  gitSt="$( gitB )"; \
  idl="${LIGHT_CYAN}"; [[ ${UID} -eq 0 ]] && _prevUser="$( puser )" && idl="$RED"; \
  PS1="\n${LIGHT_CYAN}: ${idl}$SQUARE $CYAN[\j] ${idl}\u${_prevUser} @ \h ${gitSt}$LIGHT_CYAN\w\n: ${rcl}$SQUARE $CYAN\t $GRAY#\!$LIGHT_CYAN \$; \[\033[0;39m\]";'

Et là, vous allez me dire, c'est quoi la différence avec avant ?!

Simple elle tient en une ligne : la dernière (celle qui début par PROMPT_COMMAND).
PROMPT_COMMAND, c'est quoi ?

PROMPT_COMMAND

Si existante, sa valeur est exécutée comme commande préalablement à l'affichage de chaque invite de base.

Grosso-modo, ça dit : Je fais un eval du contenu de PROMPT_COMMAND avant d'afficher PS1.
Donc, ça va évaluer ce que je veux et dans mon cas je set PS1 à chaque fois que j'appelle ENTER.

Ainsi, si je suis dans un dépôt, la branche courante est indiquée en vert lorsque c'est propre et en rouge si un update a été fait.

user

root

Oui, j'aurais pu utiliser Powerline (voir précédent billet), mais où aurait été la joie de réussir par moi même ?