Skip to content

Instantly share code, notes, and snippets.

@NKjoep
Last active September 27, 2016 16:58
Show Gist options
  • Save NKjoep/4194041 to your computer and use it in GitHub Desktop.
Save NKjoep/4194041 to your computer and use it in GitHub Desktop.
My Bash Prompt
# 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
@NKjoep
Copy link
Author

NKjoep commented Dec 3, 2012

Example of how it should appear

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment