Я знаю, что вы можете сделать что-то подобное для PS1:
Corvid @ ~/github/gitdirectory (master) $
, но это может быть немного странно: я хочу показать только базовое имя каталога git, где бы я ни находился в этом каталоге с префиксом ничего. Если я не в каталоге git, я не хочу ничего отображать
Например, если я дома, я хочу, чтобы он отображал:
Corvid $
Если я вошел в git каталог, я хочу, чтобы он отображал:
Corvid @ git_project (master)
, и если я перемещаюсь в этом каталоге, я не хочу, чтобы он что-либо добавил к пути. Поэтому, если я нахожусь на ~/git/git_project/users/authenticate.py
или где-то еще, я хочу, чтобы он отображал только Corvid @ git_project (master)
Как этого можно достичь с помощью PS1?
Мой PS1
Ян не настолько хорош, но я думаю, что это могло бы работать:
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) \$ "
Эффект:
bro3886:~/devel$ bash
bro3886 $ cd
bro3886 $ cd devel/nlp/corpora
bro3886 @ nlp (master) $
Адаптированный от Ответвление Мерзавца Дисплея или Имена тега в Вашей Подсказке Bash и Каталог Командной строки, Разрабатывающий .