Je sais que vous pouvez faire quelque chose comme ça pour la PS1:
Corvid @ ~/github/gitdirectory (master) $
mais cela peut être un peu étrange: je veux seulement montrer le nom de base du répertoire git, peu importe où je suis dans ce répertoire, préfixé de rien. Si je ne suis pas dans un répertoire git, je ne veux rien afficher
Par exemple, si je suis à la maison, je veux qu'il affiche:
Corvid $
Si j'ai entré un répertoire git, je veux qu'il affiche:
Corvid @ git_project (master)
et si je me déplace dans ce répertoire, je ne veux pas qu'il ajoute quoi que ce soit au chemin. Donc, si je suis à ~/git/git_project/users/authenticate.py
Ou quelque chose, je veux seulement qu'il affiche Corvid @ git_project (master)
Comment cela peut-il être réalisé avec PS1?
Ma PS1
- fu n'est pas si bon, mais je pense que cela pourrait fonctionner:
parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
parse_git_tag () {
git describe --tags 2> /dev/null
}
function git_Prompt () {
local OUT=
local GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
if [[ -n $GIT_ROOT ]]
then
OUT=" @ $(basename '$GIT_ROOT')"
local GIT_BRANCH="$(parse_git_branch)"
if [[ "$GIT_BRANCH" == " ((no branch))" ]]
then
$GIT_BRANCH="($(parse_git_tag))";
fi
OUT="$OUT $GIT_BRANCH"
fi
echo $OUT
}
PS1="\u \$(git_Prompt) \$ "
Effet:
bro3886:~/devel$ bash
bro3886 $ cd
bro3886 $ cd devel/nlp/corpora
bro3886 @ nlp (master) $
Adapté de Afficher les noms de branches ou de balises Git dans votre invite Bash et Style de répertoire d'invite de commandes .