O Git solicita
Em vez de criar o seu próprio aqui, recomendo usar o que é fornecido pelo projeto Git.
Em uma caixa do CentOS 7.x se você tiver yum install git
, tudo já está incluso com o Git para fazer tanto a conclusão da linha de comando quanto o prompt do git.
$ rpm -ql git|grep completion
/etc/bash_completion.d
/etc/bash_completion.d/git
/usr/share/doc/git-1.8.3.1/contrib/completion
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.tcsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.zsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
/usr/share/git-core/contrib/completion
/usr/share/git-core/contrib/completion/git-completion.tcsh
/usr/share/git-core/contrib/completion/git-prompt.sh
Aqui estão os passos para fazer isso manualmente, eles precisam adicionar seu ~/.bash_profile
para torná-los permanentes.
$ . /usr/share/git-core/contrib/completion/git-prompt.sh
$ mkdir somedir && cd somedir
$ git init
$ PS1="$GREEN\t$RED-$BLUE\u$YELLOW\w\[3[m\]$MAGENTA\$(__git_ps1)$WHITE \$ "
Fazer o acima irá definir o seu pedido para que seja assim:
[root@centos7 somedir]#
-to-
13:18:42-root/home/vagrant/somedir (master) $
OBSERVAÇÃO: agora está exibindo a ramificação que estou atualmente neste repositório, no meu prompt.
Onde estão as cores?
Para obter essa cor, é necessário definir as cores para que a variável PS1
das variáveis de cor do prompt tenha códigos de escape correspondentes às respectivas cores:
RED="\[3[0;31m\]"
YELLOW="\[3[0;33m\]"
GREEN="\[3[0;32m\]"
BLUE="\[3[0;34m\]"
MAGENTA="\[3[0;35m\]"
WHITE="\[3[0;37m\]"
Agora, redefina o PS1
novamente para pegá-los:
13:24:26-root/home/vagrant/somedir (master) $ PS1="$GREEN\t$RED-$BLUE\u$YELLOW\w\[3[m\]$MAGENTA\$(__git_ps1)$WHITE \$ "
13:24:35-root/home/vagrant/somedir (master) $
E vai ficar assim agora:
E que tal mudar a cor de ls
?
Se é provavelmente algo que eu gostaria de desencorajar porque você precisa executar um git status
em cada diretório em cada comando ls
para determinar se é um repositório do Git ou não.
Imagine isso:
$ ls somedir
dir1
dir2
dir3
dir4
dir5
dir6
dir7
resultaria em 7% degit status
de comandos para determinar qual diretório é um repositório do Git e qual não é, para que você possa decidir colori-lo como roxo ou não.