Dando color a bash.

By

Unsplash

Cuando se trata de configurar un terminal bash prefiero un setup minimalista que usando un par de colores me de contexto de quien es el usuario conectado — siempre mis iniciales 😝— , en que path estoy y si el folder está bajo .git cual es el nombre de la rama, incluso si es que hay cambios pendientes.

Googleando y jugando llegué a una configuración que me satisface. Acá se puede ver en acción:

Bash con colores y símbolos para dar contexto.

jars es el usuario conectado, ~/workspace/getonbrd el path desde el directorio home, y scorecards es la rama git.

Verde significa que no hay cambios en la rama, rojo significa que algo cambió, *, + y — significan que el cambio es una modificación, una adición o una eliminación respectivamente.

Sigue el fuente de la porción del .bash_profile para que se vea así:


export PS1="\[\033[36m\]\u:\[\033[32m\]\w\[\033[33m\]\$(markup_git_branch \$(parse_git_branch))\[\033[00m\]$ "
 | 

 | parse_git_branch() {
 |   git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (*\([^)]*\))*/\1/'
 | }
 | 

 | markup_git_branch() {
 |   if [[ -n $@ ]]; then
 |     if [[ -z $(git status --porcelain 2> /dev/null) ]]; then
 |       echo -e ":\001\033[32m\002($@)\001\033[0m\002"
 |     else
 |       local git_status="$(git status 2> /dev/null)"
 |       local git_status_porcelain="$(git status --porcelain)"
 |       changes=""
 |       if [[ $git_status =~ "modified:" ]]; then
 |         changes+="*"
 |       fi
 |       if [[ $git_status_porcelain =~ "??" ]]; then
 |         changes+="+"
 |       fi
 |       if [[ $git_status =~ "deleted:" ]]; then
 |         changes+="-"
 |       fi
 |       echo -e ":\001\033[31m\002($@$changes)\001\033[0m\002"
 |     fi
 |   fi
 | }

.bash_profile




Como siempre felices de leer cualquier sugerencia. Mándalas via chat o correo a team@getonbrd.com 🤗.

Latest on Blog