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:
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 🤗.