PS1 line with Git current branch and colors
Here is, part by part (and no Ruby):
function color_my_prompt {
local __user_and_host="\[\033[01;32m\]\u@\h"
local __cur_location="\[\033[01;34m\]\w"
local __git_branch_color="\[\033[31m\]"
#local __git_branch="\`ruby -e \"print (%x{git branch 2> /dev/null}.grep(/^\*/).first || '').gsub(/^\* (.+)$/, '(\1) ')\"\`"
local __git_branch='`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`'
local __prompt_tail="\[\033[35m\]$"
local __last_color="\[\033[00m\]"
export PS1="$__user_and_host $__cur_location $__git_branch_color$__git_branch$__prompt_tail$__last_color "
}
color_my_prompt
Looks like this (with my own terminal palette):
Also, see this and this article.
Here is my PS1 line:
\n\[\e[1;37m\]|-- \[\e[1;32m\]\u\[\e[0;39m\]@\[\e[1;36m\]\h\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]--|\[\e[0;39m\]\n$
You can wrap the part that you want in colour with the following:
\e[0;32m
- sets colour (in this case, to green)
\e[m
- sets colour back to the default
For example, this sets the prompt to the last token of the current path, in green, followed by $
in the default colour:
export PS1='\e[0;32m\w\e[m $'
Other colours are available too. Have a look at this article under colorization for a comprehensive list of alternatives.