Modification de Bash : Prompt avec statut SVN

Attention : vous n’êtes pas connecté(e). Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous vous connectez ou créez un compte, vos modifications seront attribuées à votre propre nom d’utilisateur(rice) et vous aurez d’autres avantages.

La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.

Version actuelle Votre texte
Ligne 1 : Ligne 1 :
{{Obsolète}}
 
{{Auteur|Adadov}}
== Présentation ==
== Présentation ==


C'est suite à la lecture de [http://blog.nicolargo.com/2012/02/configurer-votre-prompt-bash.html cet article] que j'ai décidé moi aussi de rafraîchir mon prompt.
C'est suite à la lecture de [http://blog.nicolargo.com/2012/02/configurer-votre-prompt-bash.html cet article] que j'ai décidé moi aussi de rafraîchir mon prompt.


Donc j'ai décidé de faire une petite variante, pour ma part je n'utilise pas GIT mais SVN.
Donc j'ai décidé de faire une petite variante, pour ma part je n'utilise pas GIT mais SVN. Donc je reprends le même principe mais pour SVN.
 
J'ai donc repris la base qui était si bien expliquée et je l'ai un peu modifiée pour trois raisons.
# J'utilise Fedora et je ne connais pas Ubuntu mais je suppose qu'il existe de menues différences
# J'utilise SVN et non GIT. (Il serait tout à fait imaginable de faire un prompt qui gère les deux d'ailleurs ...)
# Je voulais conserver le comportement initial de $PROMPT_COMMAND qui, sous Fedora, adapte le titre de mon terminal (plus facile pour le repérer parmi les 50 ouverts)
 
J'en ai en plus profité pour sortir ce morceau de code du fichier .bashrc et le placer dans un endroit où il est valable pour tout le système. Il est donc situé dans /etc/profile.d/custom.sh.


== Captures d'écran ==
== custom.sh ==
 
Voilà le prompt standard :
 
[[Image:prompt-std.png]]
 
Le prompt lorsqu'on se situe dans un répertoire géré par SVN qui possède des fichiers modifiés dans le répertoire lui même ou ses sous répertoires :
 
[[Image:prompt-uncommit.png]]
 
Le prompt lorsqu'on se situe dans un répertoire géré par SVN où le répertoire et les sous répertoires sont à jour :
 
[[Image:prompt-commit.png]]
 
== Fichier custom.sh ==


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 53 : Ligne 31 :
RIGHTPROMPT=""
RIGHTPROMPT=""
let RIGHTSIZE=0
let RIGHTSIZE=0
if [ -d ".svn" ]; then
SVNSTATUS=$(svn status 2>&1)
SVNSTATUS=$(svn status 2>&1)
echo $SVNSTATUS | grep 'not a working copy' 2>&1 >/dev/null
echo $SVNSTATUS | grep 'not a working copy' 2>&1 > /dev/null
if [ $? -eq 1 ]; then
if [ $? -eq 1 ]; then
echo $SVNSTATUS | grep -P '^\s*[AMDCR]' 2>&1 >/dev/null
echo $SVNSTATUS | grep -P '\s[AMDCR]\s' 2>&1 > /dev/null
if [ $? -eq 0 ]; then
if [ $? -eq 0 ]; then
RIGHTPROMPT=$Red
RIGHTPROMPT=$Red
else
else
RIGHTPROMPT=$Green
RIGHTPROMPT=$Green
fi
BRANCH=$(svn info | grep 'Repository Root' | sed -r 's|^.*/([a-z]+)$|\1|')
RIGHTPROMPT=$RIGHTPROMPT"[SVN Repository $BRANCH]"
let RIGHTSIZE=$(echo -n "[SVN Repository $BRANCH]" | wc -c)
fi
fi
BRANCH=$(svn info | grep 'Repository Root' | sed -r 's|^.*/([a-z]+)$|\1|')
RIGHTPROMPT=$RIGHTPROMPT"[SVN Repository $BRANCH]"
let RIGHTSIZE=$(echo -n "[SVN Repository $BRANCH]" | wc -c)
fi
fi


Ligne 76 : Ligne 52 :
echo -e $RIGHTPROMPT
echo -e $RIGHTPROMPT
}
}
# Define PROMPT_COMMAND if not already defined (fix: Modifying title on SSH connections)
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*)
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
;;
screen)
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
;;
esac
fi


# Main prompt
# Main prompt
PROMPT_COMMAND="prompt;$PROMPT_COMMAND"
PROMPT_COMMAND="prompt;$PROMPT_COMMAND"
if [ $EUID -ne 0 ]; then
if [ $EUID -ne 0 ]; then
PS1=$UserPrompt" "
PS1=$UserPrompt" "
Ligne 99 : Ligne 62 :
</syntaxhighlight>
</syntaxhighlight>


[[Category:Linux]]
[[Category:SysAdmin]]
Notez bien que toutes les contributions à Adadov.net wiki peuvent être modifiées, transformées ou supprimées par d’autres utilisateurs. Si vous ne désirez pas que vos écrits soient modifiés contre votre gré, merci de ne pas les soumettre ici.
Vous nous promettez aussi que vous avez écrit ceci vous-même ou que vous l’avez copié d’une source placée dans le domaine public ou d’une ressource libre similaire (voir AdadovNet:Copyrights pour plus de détails). N’utilisez aucun travail sous droits d’auteur sans autorisation expresse !
Annuler Aide pour la modification (s’ouvre dans une nouvelle fenêtre)

Modèles utilisés par cette page :