He actualizado mi file bash para que se muestre la twig actual de Git siguiendo las instrucciones aquí . Lo que terminé usando es
PS1="\u@\h \W \$(__git_ps1)\$ "
Sin embargo…
(branch)
a [branch]
, es decir, mostrar el nombre de la twig entre corchetes en lugar de paréntesis. La versión original tenía colors:
PS1="\[$GREEN\]\t\[$RED\]-\[$BLUE\]\u\[$YELLOW\]\[$YELLOW\]\w\[\033[m\]\[$MAGENTA\]\$(__git_ps1)\[$WHITE\]\$ "
pero cuando utilicé esto no vi ningún color. ¿Cómo podría ver los colors y cuál sería una configuration estándar para usar?
Aquí hay un pasaje relevante del file .git-prompt.sh
(que, en las versiones modernas de Git, contiene la definición de la function __git_ps1
):
# 3a) Change your PS1 to call __git_ps1 as # command-substitution: # Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' # the optional argument will be used as format string.
__git_ps1
acepta un argumento opcional que puede usar para personalizar el formatting de la cadena. En tu caso, debes usar
PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ "
Puede usar colors como en el código de su pregunta, pero debe asegurarse de que las variables en cuestión estén definidas. Coloque las siguientes líneas en algún lugar de su file ~/.bashrc
:
RED=$(tput setaf 1) GREEN=$(tput setaf 2) YELLOW=$(tput setaf 3) BLUE=$(tput setaf 4) MAGENTA=$(tput setaf 5) WHITE=$(tput setaf 7) RESET=$(tput setaf 0)
Después de get su file ~/.bashrc
, podrá usar esos colors. Por ejemplo, aquí hay una versión simplificada de su post con el nombre de la twig actual (y los corchetes circundantes) resaltados en rojo:
PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] "
La function __git_ps1
que está utilizando toma una cadena de formatting como argumento. De modo que puede pasar lo que quiera con %s
donde desee que aparezca el nombre de la twig. Por ejemplo:
PS1="\u@\h \W \$(__git_ps1 '[%s]')\$
Ninguna pista sobre los colors, lo siento.
Esto funciona:
function parse_git_dirty { [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*" } function parse_git_branch { git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/" } PS1="\[$Blue\][\[$Cyan\]\d\[$Blue\]] " # Display date PS1=$PS1"\[$Yellow\]\@:" # Display time PS1=$PS1"\[$BGreen\]\w" # Display a green pwd PS1=$PS1"\[$BCyan\]"'$(parse_git_branch)' # Display a cyan git-branch PS1=$PS1"\[$Color_Off\]$ " # Turn off color and end prompt export PS1=$PS1
produce algo como esto:
[Thu Sep 18] 12:44 PM:~/repos/test[master*]$