Skip to content

Instantly share code, notes, and snippets.

@simoneloru
Forked from NKjoep/myprompt-bash.sh
Created April 2, 2014 12:50
Show Gist options
  • Save simoneloru/9933437 to your computer and use it in GitHub Desktop.
Save simoneloru/9933437 to your computer and use it in GitHub Desktop.
# Color Reset
Color_Off="\033[0m" # Text Reset
# Regular Colors
Black="\033[0;30m" # Black
Red="\033[0;31m" # Red
Green="\033[0;32m" # Green
Yellow="\033[0;33m" # Yellow
Blue="\033[0;34m" # Blue
Purple="\033[0;35m" # Purple
Cyan="\033[0;36m" # Cyan
White="\033[0;37m" # White
# Bold
BBlack="\033[1;30m" # Black
BRed="\033[1;31m" # Red
BGreen="\033[1;32m" # Green
BYellow="\033[1;33m" # Yellow
BBlue="\033[1;34m" # Blue
BPurple="\033[1;35m" # Purple
BCyan="\033[1;36m" # Cyan
BWhite="\033[1;37m" # White
# Underline
UBlack="\033[4;30m" # Black
URed="\033[4;31m" # Red
UGreen="\033[4;32m" # Green
UYellow="\033[4;33m" # Yellow
UBlue="\033[4;34m" # Blue
UPurple="\033[4;35m" # Purple
UCyan="\033[4;36m" # Cyan
UWhite="\033[4;37m" # White
# Background
On_Black="\033[40m" # Black
On_Red="\033[41m" # Red
On_Green="\033[42m" # Green
On_Yellow="\033[43m" # Yellow
On_Blue="\033[44m" # Blue
On_Purple="\033[45m" # Purple
On_Cyan="\033[46m" # Cyan
On_White="\033[47m" # White
# High Intensty
IBlack="\033[0;90m" # Black
IRed="\033[0;91m" # Red
IGreen="\033[0;92m" # Green
IYellow="\033[0;93m" # Yellow
IBlue="\033[0;94m" # Blue
IPurple="\033[0;95m" # Purple
ICyan="\033[0;96m" # Cyan
IWhite="\033[0;97m" # White
# Bold High Intensty
BIBlack="\033[1;90m" # Black
BIRed="\033[1;91m" # Red
BIGreen="\033[1;92m" # Green
BIYellow="\033[1;93m" # Yellow
BIBlue="\033[1;94m" # Blue
BIPurple="\033[1;95m" # Purple
BICyan="\033[1;96m" # Cyan
BIWhite="\033[1;97m" # White
# High Intensty backgrounds
On_IBlack="\033[0;100m" # Black
On_IRed="\033[0;101m" # Red
On_IGreen="\033[0;102m" # Green
On_IYellow="\033[0;103m" # Yellow
On_IBlue="\033[0;104m" # Blue
On_IPurple="\033[10;95m" # Purple
On_ICyan="\033[0;106m" # Cyan
On_IWhite="\033[0;107m" # White
# Various variables you might want for your PS1 prompt instead
Time12h="\T"
Time12a="\@"
PathShort="\w"
PathFull="\W"
NewLine="\n"
Jobs="\j"
# Prompt
if [ $SHELL = "/bin/bash" ]; then
trim() {
local var=$1
var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters
echo -n "$var"
}
# My Prompt (hacked from http://mediadoneright.com/content/ultimate-git-ps1-bash-prompt)
getPS1() {
local Standard=$BYellow""$PathShort" "$Color_Off$IBlack''$Color_Off
git branch&>/dev/null;
if [ $? -eq 0 ]; then
#echo 'branch';
local GitStatus=$(git status -s);
local Clean=$(echo "$GitStatus" | wc -c);
if [ "$Clean" == 1 ]; then
#echo 'you are in a clean branch';
echo -e $IBlack$(__git_ps1 "(%s)")" "$Standard;
else
#echo 'you are in branch with unclean status';
local Added=$(trim $(echo "$GitStatus" | grep "^A\{1\}\|^M\{1\}\|^R\{1\}" | wc -l));
local Modified=$(trim $(echo "$GitStatus" | grep "^\\sM\|^AM\|^RM\|^MM" | wc -l));
local Deleted=$(trim $(echo "$GitStatus" | grep "^\\sD\|^AD\|^D.\{0,\}" | wc -l));
local Untracked=$(trim $(echo "$GitStatus" | grep "^??\|^UU" | wc -l));
local FileChanges="";
if [ $Added != 0 ]; then
FileChanges+=$Color_Off$Green$Added$Color_Off
fi
if [ $Modified != 0 ]; then
FileChanges+=$Color_Off$Yellow$Modified$Color_Off
fi
if [ $Deleted != 0 ]; then
FileChanges+=$Color_Off$Red$Deleted$Color_Off
fi
if [ $Untracked != 0 ]; then
FileChanges+=$Color_Off$Cyan$Untracked$Color_Off
fi
FileChanges=$(trim $FileChanges);
FileChangesLength=$(echo "$FileChanges" | wc -c);
if [ $FileChangesLength -gt 1 ]; then
FileChanges=" $FileChanges";
fi
echo -e $IBlack"("$(__git_ps1 %s) $FileChanges$IBlack")"$Color_Off" "$Standard;
fi
else
echo -e $Standard;
fi
}
export PS1=`getPS1`;
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment