Created
July 15, 2013 12:45
-
-
Save btd/5999664 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export PATH=/usr/local/bin:$PATH:/usr/local/share/npm/bin | |
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* | |
bind "set completion-ignore-case on" | |
#export PS1="\[\e[1;32m\]\u\[\e[m\]\[\e[0;36m\]@\[\e[m\]\[\e[1;31m\]\h\[\e[m\]\[\e[0;36m\]:\[\e[m\]\[\e[1;33m\]\w\[\e[m\]\n\[\e[1;37m\] \$ \[\e[m\]" | |
if [ -f ~/.bash_aliases ]; then | |
. ~/.bash_aliases | |
fi | |
# ============= | |
# = Functions = | |
# ============= | |
## Archives | |
# Extract about anything | |
extract () | |
{ | |
if [ -f $1 ] ; then | |
case $1 in | |
*.tar.bz2) tar xvjf $1 ;; | |
*.tar.gz) tar xvzf $1 ;; | |
*.bz2) bunzip2 $1 ;; | |
*.rar) unrar x $1 ;; | |
*.gz) gunzip $1 ;; | |
*.tar) tar xvf $1 ;; | |
*.tbz2) tar xvjf $1 ;; | |
*.tgz) tar xvzf $1 ;; | |
*.zip) unzip $1 ;; | |
*.Z) uncompress $1 ;; | |
*.7z) 7z x $1 ;; | |
*) echo "'$1' cannot be extracted via >extract<" ;; | |
esac | |
else | |
echo "'$1' is not a valid file" | |
fi | |
} | |
# List the most recent files in a directory | |
lsnew() | |
{ | |
ls -lt ${1+"$@"} | head -20; | |
} | |
# Open a manpage in Preview, which can be saved to PDF | |
pman() | |
{ | |
man -t "${1}" | open -f -a /Applications/Preview.app | |
} | |
# setup color variables | |
color_is_on= | |
color_red= | |
color_green= | |
color_yellow= | |
color_blue= | |
color_white= | |
color_gray= | |
color_bg_red= | |
color_off= | |
color_user= | |
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then | |
color_is_on=true | |
color_red="\[$(/usr/bin/tput setaf 1)\]" | |
color_green="\[$(/usr/bin/tput setaf 2)\]" | |
color_yellow="\[$(/usr/bin/tput setaf 3)\]" | |
color_blue="\[$(/usr/bin/tput setaf 6)\]" | |
color_white="\[$(/usr/bin/tput setaf 7)\]" | |
color_gray="\[$(/usr/bin/tput setaf 8)\]" | |
color_off="\[$(/usr/bin/tput sgr0)\]" | |
color_error="$(/usr/bin/tput setab 1)$(/usr/bin/tput setaf 7)" | |
color_error_off="$(/usr/bin/tput sgr0)" | |
# set user color | |
case `id -u` in | |
0) color_user=$color_red ;; | |
*) color_user=$color_green ;; | |
esac | |
fi | |
# some kind of optimization - check if git installed only on config load | |
PS1_GIT_BIN=$(which git 2>/dev/null) | |
function prompt_command { | |
local PS1_GIT= | |
local PS1_VENV= | |
local GIT_BRANCH= | |
local GIT_DIRTY= | |
local PWDNAME=$PWD | |
# beautify working directory name | |
if [[ "${HOME}" == "${PWD}" ]]; then | |
PWDNAME="~" | |
elif [[ "${HOME}" == "${PWD:0:${#HOME}}" ]]; then | |
PWDNAME="~${PWD:${#HOME}}" | |
fi | |
# parse git status and get git variables | |
if [[ ! -z $PS1_GIT_BIN ]]; then | |
# check we are in git repo | |
local CUR_DIR=$PWD | |
while [[ ! -d "${CUR_DIR}/.git" ]] && [[ ! "${CUR_DIR}" == "/" ]] && [[ ! "${CUR_DIR}" == "~" ]] && [[ ! "${CUR_DIR}" == "" ]]; do CUR_DIR=${CUR_DIR%/*}; done | |
if [[ -d "${CUR_DIR}/.git" ]]; then | |
# 'git repo for dotfiles' fix: show git status only in home dir and other git repos | |
if [[ "${CUR_DIR}" != "${HOME}" ]] || [[ "${PWD}" == "${HOME}" ]]; then | |
# get git branch | |
GIT_BRANCH=$($PS1_GIT_BIN symbolic-ref HEAD 2>/dev/null) | |
if [[ ! -z $GIT_BRANCH ]]; then | |
GIT_BRANCH=${GIT_BRANCH#refs/heads/} | |
# get git status | |
local GIT_STATUS=$($PS1_GIT_BIN status --porcelain 2>/dev/null) | |
[[ -n $GIT_STATUS ]] && GIT_DIRTY=1 | |
fi | |
fi | |
fi | |
fi | |
# build b/w prompt for git and virtual env | |
[[ ! -z $GIT_BRANCH ]] && PS1_GIT=" (git: ${GIT_BRANCH})" | |
if $color_is_on; then | |
# build git status for prompt | |
if [[ ! -z $GIT_BRANCH ]]; then | |
if [[ -z $GIT_DIRTY ]]; then | |
PS1_GIT=" (git: ${color_green}${GIT_BRANCH}${color_off})" | |
else | |
PS1_GIT=" (git: ${color_red}${GIT_BRANCH}${color_off})" | |
fi | |
fi | |
fi | |
# set new color prompt | |
PS1="${color_user}${USER}${color_off}${color_blue}@${color_off}${color_yellow}${HOSTNAME}${color_off} ${color_white}${PWDNAME}${color_off}${PS1_GIT} \n ${color_white}➜${color_off} " | |
# get cursor position and add new line if we're not in first column | |
# cool'n'dirty trick (http://stackoverflow.com/a/2575525/1164595) | |
# XXX FIXME: this hack broke ssh =( | |
# exec < /dev/tty | |
# local OLDSTTY=$(stty -g) | |
# stty raw -echo min 0 | |
# echo -en "\033[6n" > /dev/tty && read -sdR CURPOS | |
# stty $OLDSTTY | |
echo -en "\033[6n" && read -sdR CURPOS | |
[[ ${CURPOS##*;} -gt 1 ]] && echo "${color_error}↵${color_error_off}" | |
# set title | |
echo -ne "\033]0;${USER}@${HOSTNAME}:${PWDNAME}"; echo -ne "\007" | |
} | |
# set prompt command (title update and color prompt) | |
PROMPT_COMMAND=prompt_command | |
# set new b/w prompt (will be overwritten in 'prompt_command' later for color prompt) | |
PS1='\u@\h:\w\$ ' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment