Skip to content

Instantly share code, notes, and snippets.

@chorn
Created May 27, 2014 17:56
Show Gist options
  • Save chorn/7b13044a26a7ef8c6b54 to your computer and use it in GitHub Desktop.
Save chorn/7b13044a26a7ef8c6b54 to your computer and use it in GitHub Desktop.
export LESS="irQ"
export HISTCONTROL=ignoreboth
export HISTFILESIZE=10000000
export HISTSIZE=1000
export INPUTRC="$HOME/.bash_inputrc"
export MAILCHECK=0
export PS1='\t \u@\h \w \$ '
umask 022
set -o emacs -o monitor -o notify
for opt in checkwinsize cmdhist expand_aliases histappend hostcomplete interactive_comments nocaseglob no_empty_cmd_completion progcomp promptvars sourcepath checkjobs ; do
shopt | grep -c $opt >/dev/null && shopt -s $opt
done
remove_from_path() {
export PATH=${PATH//":$1"/}
export PATH=${PATH//"$1:"/}
export PATH=${PATH//":$1:"/}
}
add_to_path() {
remove_from_path "$1"
[[ -d "$1" || "$2" -eq "force" ]] && export PATH="$1:${PATH}"
}
PATH="/bin:/sbin"
for d in /{bin,sbin} /{usr,opt}/{bin,sbin} /{opt,usr}/{local,X11}/{bin,sbin} /usr/local/Cellar/macvim/*/MacVim.app/Contents/MacOS /Applications/LibreOffice.app/Contents/MacOS /Applications/Sublime\ Text.app/Contents/SharedSupport/bin /Applications/VMware\ Fusion.app/Contents/Library /Applications/Postgres.app/Contents/Versions/*/bin $HOME/bin ; do
add_to_path "$d"
done
# scripts ------------------------------------------------------------------
for script in "$HOME/.bash_${HOSTNAME/.*/}" /etc/bash_completion /usr/local/etc/bash_completion /usr/share/git/git-prompt.sh /usr/share/git-core/contrib/completion/git-prompt.sh /usr/local/share/chruby/chruby.sh ~/bin/git-prompt.sh /usr/local/rvm/scripts/rvm ~/.rvm/scripts/rvm ; do
[[ -s "$script" ]] && source "$script"
done
# Preferred commands -------------------------------------------------------
for f in nano vi emacs vim mvim subl atom ; do
if command -v "${f}" >/dev/null 2>/dev/null ; then
export EDITOR="${f}"
export VISUAL="${f}"
fi
done
for f in more most vimpager less ; do
if command -v "${f}" >/dev/null 2>/dev/null ; then
export PAGER="${f}"
export READNULLCMD="${f}"
alias m="${f}"
fi
done
# keychain -----------------------------------------------------------------
if command -v keychain >/dev/null 2>/dev/null ; then
if [ "${OSTYPE:0:6}" = "darwin" ] ; then
eval `keychain --eval --quiet --agents ssh --inherit any id_dsa`
elif [ "${OSTYPE:0:5}" = "linux" ] ; then
eval `keychain --eval --quiet --agents ssh id_dsa`
fi
fi
# OS X ---------------------------------------------------------------------
if [ "${OSTYPE:0:6}" = "darwin" ] ; then
export _GNUDATE="gdate"
alias ls="/bin/ls -G"
alias jist='jist -c'
alias l="ls -lO"
alias p="ps -Aj"
alias vuv="vagrant up --provider vmware_fusion"
alias vu="vagrant up"
alias update_brew="brew update && brew upgrade && brew prune && brew cleanup && brew outdated "
alias start="simple_launchctl load"
alias stop="simple_launchctl unload"
simple_launchctl() { find $HOME/Library/LaunchAgents -name '*.plist' -name '*'$2'*' -ok launchctl $1 -w {} \; ; }
# Linux ---------------------------------------------------------------------
elif [ "${OSTYPE:0:5}" = "linux" ] ; then
export _GNUDATE="date"
alias ls="/bin/ls --color=auto --classify"
alias p="ps auxOU"
alias agu="sudo apt-get update -qq; sudo aptitude safe-upgrade"
kernel_purge() { dpkg -l "linux-*"|sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|xargs sudo apt-get purge; }
if [ "${HOME:0:14}" = "/var/services/" ] ; then
export TERM=cons25
alias ls="/opt/bin/ls --color=auto --classify"
alias ps="/opt/bin/ps"
fi
fi
# ---------------------------------------------------------------------------
alias l="ls -l"
alias l1="ls -1"
alias ll="l -A"
alias la="ls -A"
lm() { ls -lF $2 | m ; }
pw() { p | less ; }
alias confsync="rsync -qax .tmux.conf .screenrc .bashrc .bash_profile .bash_inputrc .gemrc .vimrc"
# MySQL ---------------------------------------------------------------------
if command -v mysql >/dev/null 2>/dev/null ; then
alias mydump="mysqldump --allow-keywords --add-locks --hex-blob --max_allowed_packet=128M --lock-tables=false --lock-all-tables=false --quick --quote-names --complete-insert=false"
fi
# Ruby ---------------------------------------------------------------------
if ! command -v rvm >/dev/null 2>/dev/null && command -v chruby >/dev/null 2>/dev/null ; then
[[ -s "$HOME/.ruby-version" ]] && chruby $(cat "$HOME/.ruby-version")
fi
if command -v ruby >/dev/null 2>/dev/null ; then
alias be="bundle exec"
alias berc="bundle exec rails c"
alias gs="gem server"
rebundle() { start=`pwd` ; find . -maxdepth 3 -type f -name Gemfile | while read gemfile ; do echo $gemfile && cd `dirname "$gemfile"` && bundle ; cd "$start" ; done ; }
fi
# Git ---------------------------------------------------------------------
if command -v git >/dev/null 2>/dev/null ; then
alias gst="git status"
alias gd="git diff"
alias gcam="git commit -a -m"
alias gco="git checkout"
alias gb="git branch"
alias gps="git push"
alias gpl="git pull"
alias gpp="git pull --rebase && git push"
alias gmf="git merge --ff-only"
fi
# tmux ---------------------------------------------------------------------
if command -v tmux >/dev/null 2>/dev/null ; then
neww() { tmux neww -n $1.1 "exec ssh $1" && tmux neww -n $1.2 "exec ssh $1" ; }
fi
# dates ---------------------------------------------------------------------
if command -v $_GNUDATE >/dev/null 2>/dev/null ; then
date2stamp() { $_GNUDATE --utc --date "$1" +%s ; }
stamp2date() { $_GNUDATE --utc --date "1970-01-01 $1 sec" "+%Y-%m-%d %T" ; }
dateDiff() {
case $1 in
-s) sec=1; shift;;
-m) sec=60; shift;;
-h) sec=3600; shift;;
-d) sec=86400; shift;;
-w) sec=604800; shift;;
*) sec=86400;;
esac
dte1=$(date2stamp $1)
dte2=$(date2stamp $2)
diffSec=$((dte2-dte1))
if ((diffSec < 0)); then abs=-1; else abs=1; fi
echo $((diffSec/sec*abs))
}
date_range() {
range=$(dateDiff -d $1 $2)
for((i=0; i<=$range; i++)) ; do
$_GNUDATE --date "$1 $i day" +'%Y-%m-%d'
done
}
fi
# openssl ---------------------------------------------------------------------
if command -v openssl >/dev/null 2>/dev/null ; then
newssl() {
case "$1" in
rsa|-rsa|--rsa|-r) openssl genrsa -out key.pem 2048 >&/dev/null ;;
dsa|-dsa|--dsa|-d) openssl dsaparam -noout -out key.pem -genkey 2048 >&/dev/null ;;
ec|-ec|--ec|-e) openssl ecparam -out key.pem -name sect571k1 -genkey >&/dev/null ;;
*) echo "newssl <rsa|dsa|ec> <hostname>" ; return ;;
esac
openssl req -new -x509 -days 3650 -subj "/C=US/ST=New York/L=Rochester/CN=$2" -key key.pem -out "$2.pem" >&/dev/null
openssl x509 -in "$2.pem" -text >&/dev/null
cat key.pem >> "$2.pem" && rm key.pem >&/dev/null
}
fi
# Colors---------------------------------------------------------------------
declare -a __color
__reset="(B"
__color[0]=""
__color[1]=""
__color[2]=""
__color[3]=""
__color[4]=""
__color[5]=""
__color[6]=""
__color[7]=""
__color[8]=""
__color[9]=""
__color[10]=""
__color[11]=""
__color[12]=""
__color[13]=""
__color[14]=""
__color[15]=""
__color[16]=""
__color[17]=""
__color[18]=""
__color[19]=""
__color[20]=""
__color[21]=""
__color[22]=""
__color[23]=""
__color[24]=""
__color[25]=""
__color[26]=""
__color[27]=""
__color[28]=""
__color[29]=""
__color[30]=""
__color[31]=""
__color[32]=""
__color[33]=""
__color[34]=""
__color[35]=""
__color[36]=""
__color[37]=""
__color[38]=""
__color[39]=""
__color[40]=""
__color[41]=""
__color[42]=""
__color[43]=""
__color[44]=""
__color[45]=""
__color[46]=""
__color[47]=""
__color[48]=""
__color[49]=""
__color[50]=""
__color[51]=""
__color[52]=""
__color[53]=""
__color[54]=""
__color[55]=""
__color[56]=""
__color[57]=""
__color[58]=""
__color[59]=""
__color[60]=""
__color[61]=""
__color[62]=""
__color[63]=""
__color[64]=""
__color[65]=""
__color[66]=""
__color[67]=""
__color[68]=""
__color[69]=""
__color[70]=""
__color[71]=""
__color[72]=""
__color[73]=""
__color[74]=""
__color[75]=""
__color[76]=""
__color[77]=""
__color[78]=""
__color[79]=""
__color[80]=""
__color[81]=""
__color[82]=""
__color[83]=""
__color[84]=""
__color[85]=""
__color[86]=""
__color[87]=""
__color[88]=""
__color[89]=""
__color[90]=""
__color[91]=""
__color[92]=""
__color[93]=""
__color[94]=""
__color[95]=""
__color[96]=""
__color[97]=""
__color[98]=""
__color[99]=""
__color[100]=""
__color[101]=""
__color[102]=""
__color[103]=""
__color[104]=""
__color[105]=""
__color[106]=""
__color[107]=""
__color[108]=""
__color[109]=""
__color[110]=""
__color[111]=""
__color[112]=""
__color[113]=""
__color[114]=""
__color[115]=""
__color[116]=""
__color[117]=""
__color[118]=""
__color[119]=""
__color[120]=""
__color[121]=""
__color[122]=""
__color[123]=""
__color[124]=""
__color[125]=""
__color[126]=""
__color[127]=""
__color[128]=""
__color[129]=""
__color[130]=""
__color[131]=""
__color[132]=""
__color[133]=""
__color[134]=""
__color[135]=""
__color[136]=""
__color[137]=""
__color[138]=""
__color[139]=""
__color[140]=""
__color[141]=""
__color[142]=""
__color[143]=""
__color[144]=""
__color[145]=""
__color[146]=""
__color[147]=""
__color[148]=""
__color[149]=""
__color[150]=""
__color[151]=""
__color[152]=""
__color[153]=""
__color[154]=""
__color[155]=""
__color[156]=""
__color[157]=""
__color[158]=""
__color[159]=""
__color[160]=""
__color[161]=""
__color[162]=""
__color[163]=""
__color[164]=""
__color[165]=""
__color[166]=""
__color[167]=""
__color[168]=""
__color[169]=""
__color[170]=""
__color[171]=""
__color[172]=""
__color[173]=""
__color[174]=""
__color[175]=""
__color[176]=""
__color[177]=""
__color[178]=""
__color[179]=""
__color[180]=""
__color[181]=""
__color[182]=""
__color[183]=""
__color[184]=""
__color[185]=""
__color[186]=""
__color[187]=""
__color[188]=""
__color[189]=""
__color[190]=""
__color[191]=""
__color[192]=""
__color[193]=""
__color[194]=""
__color[195]=""
__color[196]=""
__color[197]=""
__color[198]=""
__color[199]=""
__color[200]=""
__color[201]=""
__color[202]=""
__color[203]=""
__color[204]=""
__color[205]=""
__color[206]=""
__color[207]=""
__color[208]=""
__color[209]=""
__color[210]=""
__color[211]=""
__color[212]=""
__color[213]=""
__color[214]=""
__color[215]=""
__color[216]=""
__color[217]=""
__color[218]=""
__color[219]=""
__color[220]=""
__color[221]=""
__color[222]=""
__color[223]=""
__color[224]=""
__color[225]=""
__color[226]=""
__color[227]=""
__color[228]=""
__color[229]=""
__color[230]=""
__color[231]=""
__color[232]=""
__color[233]=""
__color[234]=""
__color[235]=""
__color[236]=""
__color[237]=""
__color[238]=""
__color[239]=""
__color[240]=""
__color[241]=""
__color[242]=""
__color[243]=""
__color[244]=""
__color[245]=""
__color[246]=""
__color[247]=""
__color[248]=""
__color[249]=""
__color[250]=""
__color[251]=""
__color[252]=""
__color[253]=""
__color[254]=""
__color[255]=""
# if [[ "$TERM" =~ -256color ]] ; then
color() { echo -ne ${__color[$1]} ; return 0 ; }
# else
# color() { return 0 ; }
# fi
# __reset="$(tput sgr0)"
# for i in {0..255} ; do
# echo "__color[$i]=\"$(tput setaf $i)\"" >> $colorscript
# done
# Hosts----------------------------------------------------------------------
if command -v dnsdomainname >/dev/null 2>/dev/null ; then
export DOMAIN=$(dnsdomainname)
elif command -v scutil >/dev/null 2>/dev/null ; then
export DOMAIN=$(echo 'show State:/Network/Global/DNS' | scutil | grep DomainName | sed -e 's/^.*: *//')
fi
if [[ -n $DOMAIN ]] ; then
export BOXEN=$(host -t TXT boxen.${DOMAIN} | sed -e 's/^[^"]*"//' -e 's/"$//')
fi
if [[ -n $BOXEN ]] ; then
boxen_tmux() {
tmux new-session -d -s BOXEN
for host in $BOXEN ; do
tmux new-window -t BOXEN -a -n $host "exec ssh $host"
done
tmux new-session -d -s DEV
tmux new-window -t DEV -a
tmux new-window -t DEV -a
tmux new-window -t DEV -a
tmux att -t DEV
}
boxen_confsync() {
for host in $BOXEN ; do
echo $host
ping -q -c 1 -W 250 $host >/dev/null 2>/dev/null && confsync "$USER@${host}:"
done
}
fi
# Prompt---------------------------------------------------------------------
_ps1_time_color() {
if [[ $? -eq 0 ]] ; then
color 4
else
color 1
fi
return 0
}
_ps1_id_color() {
if [[ $UID -eq 0 ]] ; then
color 9
else
color 7
fi
return 0
}
_ps1_id() {
if [[ $EUID -eq 0 ]] ; then
echo -n "__ROOT__"
else
echo -n $USER
fi
return 0
}
_ps1_ruby() {
if command -v rvm-prompt >/dev/null 2>/dev/null ; then
printf "%s" " $(rvm-prompt)"
elif command -v ruby >/dev/null 2>/dev/null ; then
_RUBY_VERSION=$(ruby --version)
_RUBY=${_RUBY_VERSION/ruby /ruby-}
printf "%s" " ${_RUBY/ */}"
fi
return 0
}
_ps1_git_color() {
if command -v git >/dev/null 2>/dev/null ; then
export __LOCAL_GIT_STATUS="`git status -unormal 2>&1`"
if ! [[ "$__LOCAL_GIT_STATUS" =~ Not\ a\ git\ repo ]]; then
if [[ "$__LOCAL_GIT_STATUS" =~ nothing\ to\ commit ]]; then
color 10
elif [[ "$__LOCAL_GIT_STATUS" =~ nothing\ added\ to\ commit\ but\ untracked\ files\ present ]]; then
color 11
else
color 9
fi
fi
fi
return 0
}
_ps1_git() {
if command -v __git_ps1 >/dev/null 2>/dev/null ; then
if [[ "$__LOCAL_GIT_STATUS" =~ On\ branch\ ([^[:space:]]+) ]]; then
branch=${BASH_REMATCH[1]}
test "$branch" != master || branch=' '
else
branch="(`git describe --all --contains --abbrev=4 HEAD 2> /dev/null || echo HEAD`)"
fi
printf "$(__git_ps1)"
fi
return 0
}
ps1_update() {
export PS1='\[$__reset\]\[$(_ps1_time_color)\]\t\[$__reset\] \[$(_ps1_id_color)\]$(_ps1_id)\[$__reset\]@\[${__color[4]}\]\h\[$__reset\]$(_ps1_ruby)\[$(_ps1_git_color)\]$(_ps1_git)\[$__reset\] \w \$ '
}
export PROMPT_COMMAND="ps1_update"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment