Skip to content

Instantly share code, notes, and snippets.

@RichardMarks
Last active June 22, 2017 22:00
Show Gist options
  • Save RichardMarks/b20b5632ff0eb2585bb8b816aabd0d55 to your computer and use it in GitHub Desktop.
Save RichardMarks/b20b5632ff0eb2585bb8b816aabd0d55 to your computer and use it in GitHub Desktop.
OSX bash profile
# GNU coreutils
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
# bash completion
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
# Added by n-install (see http://git.io/n-install-repo).
export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin"
# prettier git
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
# fix ls colors
eval $( dircolors -b $HOME/.dircolors )
# nicer ls default
# 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"
PUser="\u"
PHost="\h"
export PS1=$Red$PUser$Color_Off@$Cyan$PHost:$Color_Off$PathFull$Color_Off$NewLine$IBlack$Time12h$Color_Off'$(git branch &>/dev/null;\
if [ $? -eq 0 ]; then \
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
if [ "$?" -eq "0" ]; then \
# @4 - Clean repository - nothing to commit
echo "'$Green'"$(__git_ps1 " (%s)"); \
else \
# @5 - Changes to working tree
echo "'$IRed'"$(__git_ps1 " {%s}"); \
fi) '$BYellow$PathShort$Color_Off'\$ "; \
else \
# @2 - Prompt when not in GIT repo
echo " '$PUser@$PHost$PathFull$NewLine$White$PathShort$Color_Off'\$ "; \
fi)'
export EDITOR='vim'
# custom functions and aliases
alias rebash='source ~/.bash_profile'
alias hidedesktopicons='defaults write com.apple.finder CreateDesktop false && killall Finder'
alias showdesktopicons='defaults write com.apple.finder CreateDesktop true && killall Finder'
alias ls='ls -aGFh --color="always"'
# google something
function google() {
l_subject="$@"
open "https://www.google.com/?q=$l_subject"
}
# install npm module globally
function gni() {
l_package="$@"
npm i -g "$l_package"
}
# install npm module locally
function ni() {
l_package="$@"
npm i "$l_package"
}
alias ns='npm start'
alias nt='npm test'
alias gs='git status'
alias gcm='git checkout master'
# checkout new git branch from current
function gcb() {
l_branch="$@"
git checkout -b "$l_branch"
}
alias gh='open http://github.com'
alias gbs='git branch --sort=committerdate'
alias gbl="git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"
# curl url from http or https without certs
# Allow connections to SSL sites without certs
function ck() {
l_uri="$@"
curl -k "$l_uri"
}
function cci() {
l_path="$1"
# if []
mkdir -p "$l_path"
cd "$l_path"
echo "Creating Component in $l_path/"
touch "$l_path/index.js"
touch "$l_path/index.css"
touch "$l_path/index.tests.js"
}
# GNU coreutils
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
# bash completion
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
# Added by n-install (see http://git.io/n-install-repo).
export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin"
# prettier git
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
# fix ls colors
eval $( dircolors -b $HOME/.dircolors )
# nicer ls default
# 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"
PUser="\u"
PHost="\h"
export PS1=$Red$PUser$Color_Off@$Cyan$PHost:$Color_Off$PathFull$Color_Off$NewLine$IBlack$Time12h$Color_Off'$(git branch &>/dev/null;\
if [ $? -eq 0 ]; then \
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
if [ "$?" -eq "0" ]; then \
# @4 - Clean repository - nothing to commit
echo "'$Green'"$(__git_ps1 " (%s)"); \
else \
# @5 - Changes to working tree
echo "'$IRed'"$(__git_ps1 " {%s}"); \
fi) '$BYellow$PathShort$Color_Off'\$ "; \
else \
# @2 - Prompt when not in GIT repo
echo " '$PUser@$PHost$PathFull$NewLine$White$PathShort$Color_Off'\$ "; \
fi)'
export EDITOR='vim'
# custom functions and aliases
alias rebash='source ~/.bash_profile'
alias hidedesktopicons='defaults write com.apple.finder CreateDesktop false && killall Finder'
alias showdesktopicons='defaults write com.apple.finder CreateDesktop true && killall Finder'
alias ls='ls -aGFh --color="always"'
# google something
function google() {
l_subject="$@"
open "https://www.google.com/?q=$l_subject"
}
# install npm module globally
function gni() {
l_package="$@"
npm i -g "$l_package"
}
# install npm module locally
function ni() {
l_package="$@"
npm i "$l_package"
}
alias ns='npm start'
alias nt='npm test'
alias gs='git status'
alias gcm='git checkout master'
# checkout new git branch from current
function gcb() {
l_branch="$@"
git checkout -b "$l_branch"
}
alias gh='open http://github.com'
alias gbs='git branch --sort=committerdate'
alias gbl="git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"
alias gfm='git fetch origin master'
alias gpm='git pull origin master'
alias gitsync='gfm && gpm'
# curl url from http or https without certs
# Allow connections to SSL sites without certs
function ck() {
l_uri="$@"
curl -k "$l_uri"
}
function cci() {
l_path="$1"
# if []
mkdir -p "$l_path"
cd "$l_path"
echo "Creating Component in $l_path/"
touch "$l_path/index.js"
touch "$l_path/index.css"
touch "$l_path/index.tests.js"
}
# hello git safety net
function git_safety_net () {
if [[ "$BASH_COMMAND" == *"git checkout"* ]]
then
echo -e "\x1b[93m \x1b[41m git safety net triggered! \x1b[39m \x1b[49m"
echo ""
echo " User is attempting to run command:"
echo ""
echo -e "\x1b[93m $BASH_COMMAND \x1b[39m"
echo ""
read -r -p $'\x1b[93m \x1b[41m Do you really want to run this command? \x1b[39m \x1b[49m[y/N] ' response
case "$response" in
[yY][eE][sS]|[yY])
return 0
;;
*)
echo ""
echo -e "\x1b[93m \x1b[41m The command was aborted! \x1b[39m \x1b[49m"
echo ""
return 1
;;
esac
return 1
fi
}
shopt -s extdebug
trap git_safety_net DEBUG
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment