Как я показываю, что ответвление мерзавца с раскрашивает подсказку Bash?

Я использую это руководство для показа имени ответвления в терминале гнома (Ubuntu 15.10) при работе в репозитории мерзавца. На основе вышеупомянутого я теперь имею ниже в моем ~/.bashrc файл:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes 

...

# Add git branch if its present to 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

В результате я теперь добираюсь:

enter image description here

таким образом, это работает. Но почему имеет окраска моего user@host удаленный? И я также ожидал бы, что имя ответвления должно быть окрашено. Прежде чем это было похоже на это:

enter image description here

ОБНОВЛЕНИЕ: Я теперь судил это руководство вместо этого:

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

добавление этого к .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\] $ "

и это работает:

enter image description here

Заметьте в .bashrc, у меня также есть этот (значение по умолчанию):

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

Я должен все же найти причину, почему тот отрывок дает корректный результат, и другая версия не делает. Какой-либо вход на этом?

Вот версия моего .bashrc, которому включили старый отрывок, который не работает:

http://pastebin.com/M8kjEiH3

166
задан 7 February 2016 в 01:39

10 ответов

Этот фрагмент:

# Add git branch if its present to 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

предназначен для замены определение приглашения по умолчанию:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

которое заканчивается на:

unset color_prompt force_color_prompt

.bashrc , который вы опубликовали , показывает, что вы добавляете его после определения приглашения по умолчанию и unset color_prompt force_color_prompt (строка # 64).

Либо замените определение приглашения по умолчанию на фрагмент, либо оставьте ~ / .bashrc как есть и прокомментируйте определение приглашения по умолчанию вместе с unset color_prompt force_color_prompt в строке № 64:


Таким образом, часть вашего .bashrc может выглядеть как

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
# THE SIX LINES BELOW are the default prompt and the unset (which were in the original .bashrc)
#if [ "$color_prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#fi
#unset color_prompt force_color_prompt

screensot

170
ответ дан 22 November 2019 в 22:58

Ubuntu: Показать имя ветки на вашем терминале

Добавьте эти строки в свой файл ~ / .bashrc

# Show git branch name
force_color_prompt=yes
color_prompt=yes
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

Перезагрузите файл .bashrc с помощью этой команды:

$ source ~/.bashrc
124
ответ дан 22 November 2019 в 22:58

А пока я следил за этим https://gist.github.com/eliotsykes/47516b877f5a4f7cd52f и работает, пока он мне нравится, хотя я планирую настроить его дальше.

В Терминале

 mkdir ~ / .bash
 

Скопируйте необработанный файл git-prompt.sh из git contrib в ~ / .bash каталог: https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

Внутри ~ / .bashrc или ~ / .bash_profile (выберите файл, в котором вы обычно помещайте любые настройки / настройки bash), добавьте строки:

 source ~ / .bash / git-prompt.sh # Показать имя ветки git в командной строке
export GIT_PS1_SHOWCOLORHINTS = true # Возможность для git-prompt.sh отображать имя ветки в цвете

 # Терминальная подсказка:
 # Включите ветку git, используйте PROMPT_COMMAND (не PS1) для получения цветного вывода (подробнее см. Git-prompt.sh)
export PROMPT_COMMAND = '__ git_ps1 "\ w" "\ n \\\ $"' # Ветка Git (полагается на git-prompt.sh)
 

Пока вы находитесь внутри репозитория git, в командной строке Bash теперь должно отображаться цвет текущей ветки git означает, что она не зафиксирована изменения.

20
ответ дан 22 November 2019 в 22:58

Pergi ke folder rumah

klik Ctrl + h untuk menunjukkan fail tersembunyi.

Buka. bashrc fail dan pada akhirnya tampal yang berikutnya:

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\] $ "

Sekiranya anda mempunyai terminal dibuka, tutup dan buka semula. Nikmati !!

2
ответ дан 22 November 2019 в 22:58

Моя проблема заключалась в том, что я не включил параметр

Выполнить команду в качестве оболочки входа в

Терминал Править Настройки профиля Команда

0
ответ дан 22 November 2019 в 22:58

замените

parse_git_branch

на

parse_git_branch 2>/dev/null

в определении PS1 и живите долго и счастливо.

0
ответ дан 22 November 2019 в 22:58

Быстрый взлом:

  1. Добавление этого в ~ / .bashrc :
parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

export PS1="\u@\h \[\e[32m\]\w \[\e[91m\]\$(parse_git_branch)\[\e[00m\]$ "
  1. Перезапустите терминал или исходный код ~ / .bashrc :

enter image description here

Подробнее: https://medium.com/@thucnc/how-to-show-current-git-branch-with-colors-in-bash-prompt-380d05a24745

5
ответ дан 22 November 2019 в 22:58
sudo vi .bashrc

Запишите ниже код кнопки файла:

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
-1
ответ дан 22 November 2019 в 22:58

Добавьте строки ниже в ~ / .bashrc :

export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true

export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '
3
ответ дан 22 November 2019 в 22:58

Зачем использовать sed ? как в ...

git ветка 2> / dev / null | sed -e '/ ^ [^ ] / d' -e 's / (. *) / (\ 1) /'

Намного проще использовать:

git branch - show-current

Он выводит текущую ветку и никаких дополнительных символов!

0
ответ дан 5 January 2021 в 22:44

Другие вопросы по тегам:

Похожие вопросы: