209 votes

Comment puis-je afficher la branche git avec des couleurs dans l'invite de commandes Bash ?

Je suis en train d'utiliser ce guide pour afficher le nom de la branche dans le terminal gnome (Ubuntu 15.10) lorsque je travaille dans un dépôt git. En fonction de ce qui précède, j'ai maintenant ce qui suit dans mon fichier ~/.bashrc :

# décommentez pour un invite de couleur, si le terminal en a la capacité ; désactivé
# par défaut pour ne pas distraire l'utilisateur : le focus dans une fenêtre de terminal
# devrait être sur la sortie des commandes, pas sur l'invite
#force_color_prompt=yes 

...

# Ajouter la branche git si elle est présente à PS1
parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

En conséquence, j'obtiens maintenant :

enter image description here

alors cela fonctionne. Mais pourquoi la coloration de mon user@host a-t-elle été supprimée ? Et je m'attendrais également à ce que le nom de la branche soit coloré. Avant, cela ressemblait à ceci :

enter image description here

MISE À JOUR : J'ai maintenant essayé ce guide à la place :

https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt

en ajoutant ceci à .bashrc :

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

et ça fonctionne :

enter image description here

Remarquez dans .bashrc j'ai aussi ceci (par défaut) :

# décommentez pour un invite de couleur, si le terminal en a la capacité ; désactivé
# par défaut pour ne pas distraire l'utilisateur : le focus dans une fenêtre de terminal
# devrait être sur la sortie des commandes, pas sur l'invite
#force_color_prompt=yes

Je n'ai pas encore trouvé la raison pour laquelle ce extrait donne le résultat correct et l'autre version ne le fait pas. Des idées à ce sujet ?

Voici la version de mon .bashrc qui a l'ancien extrait activé qui ne fonctionne pas :

http://pastebin.com/M8kjEiH3

0voto

andrej Points 316

Remplacer

parse_git_branch

par

parse_git_branch 2>/dev/null

dans votre définition de PS1 et vivez heureux pour toujours.

0voto

Depaulian Points 11

Ma variante pour KUbuntu 20.04 LTS, dérivée de la valeur originale de PS1:

# mettre dans ~/.bashrc
parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m]:\[\033[01;34m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

-1voto

nimesh Points 1
sudo vi .bashrc

Écrivez ci-dessous le code du bouton du fichier :

git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\]\$(git_branch)\$ "

source .bashrc

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X