Create a gist now

Instantly share code, notes, and snippets.

edit existing PS1; be more efficient
# username@Machine ~/dev/dir [master] $ # clean working directory
# username@Machine ~/dev/dir [master*] $ # dirty working directory
# djmitche: *edit* an existing PS1 to add the git information
# djmitche: only invoke 'git' and 'sed' once (each) for each prompt
function __git_info {
local status dirty branch
status=$(git status 2> /dev/null)
test -z "$status" && return
[[ "$status" =~ "working directory clean" ]] || dirty="*"
branch=$(sed '1{s/.*branch \(.*\).*/\1/g;q}' <<<"$status")
echo " [$branch$dirty]"
# append git info to the current prompt
export PS1=`echo "$PS1"|sed 's/\\\\w/\\\\w$(__git_info)/g'`
#export PS1='\u@\h \[\033[1;33m\]\w\[\033[0m\]$(__git_info)$ '
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment