Skip to content

Instantly share code, notes, and snippets.

@michealbenedict
Created September 12, 2012 18:47
Show Gist options
  • Save michealbenedict/3709009 to your computer and use it in GitHub Desktop.
Save michealbenedict/3709009 to your computer and use it in GitHub Desktop.

Revisions

  1. michealbenedict created this gist Sep 12, 2012.
    149 changes: 149 additions & 0 deletions .bash_profile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,149 @@
    # Limit of files
    ulimit -S -n 1024

    alias l="ls -alt"
    alias locate='if [ $((`date +%s`-`eval $(stat -s /var/db/locate.database); echo $st_mtime`)) -gt 3600 ]; then echo "locate: db is too old!">/dev/stderr; sudo /usr/libexec/locate.updatedb; fi; locate -i'

    #PS1="[\u:\w]:\\$ "

    alias gc="git commit -m $1"
    alias gca="git add -A; git commit -m $1"
    alias gcap=git_add_all_commit_and_push
    alias gs='git status'
    alias gf='git fetch'
    alias gm='git merge origin'
    alias gp='git push'
    alias gpl='git pull'
    alias gpom="git pull origin master"

    function git_add_all_commit_and_push () {
    git add -A;
    git commit -m "$1";
    git push;
    }


    # My awesome bash prompt
    #
    # Copyright (c) 2012 "Cowboy" Ben Alman
    # Licensed under the MIT license.
    # http://benalman.com/about/license/
    #
    # Example:
    # [master:!?][cowboy@CowBook:~/.dotfiles]
    # [11:14:45] $
    #
    # Read more (and see a screenshot) in the "Prompt" section of
    # https://github.com/cowboy/dotfiles

    # ANSI CODES - SEPARATE MULTIPLE VALUES WITH ;
    #
    # 0 reset 4 underline
    # 1 bold 7 inverse
    #
    # FG BG COLOR FG BG COLOR
    # 30 40 black 34 44 blue
    # 31 41 red 35 45 magenta
    # 32 42 green 36 46 cyan
    # 33 43 yellow 37 47 white

    if [[ ! "${prompt_colors[@]}" ]]; then
    prompt_colors=(
    "36" # information color
    "37" # bracket color
    "31" # error color
    )

    if [[ "$SSH_TTY" ]]; then
    # connected via ssh
    prompt_colors[0]="32"
    elif [[ "$USER" == "root" ]]; then
    # logged in as root
    prompt_colors[0]="35"
    fi
    fi

    function serve() {
    port="${1:-8000}"
    ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => $port, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
    }

    # Inside a prompt function, run this alias to setup local $c0-$c9 color vars.
    alias prompt_getcolors='prompt_colors[9]=; local i; for i in ${!prompt_colors[@]}; do local c$i="\[\e[0;${prompt_colors[$i]}m\]"; done'

    # Exit code of previous command.
    function prompt_exitcode() {
    prompt_getcolors
    [[ $1 != 0 ]] && echo " $c2$1$c9"
    }

    # Git status.
    function prompt_git() {
    prompt_getcolors
    local status output flags
    status="$(git status 2>/dev/null)"
    [[ $? != 0 ]] && return;
    output="$(echo "$status" | awk '/# Initial commit/ {print "(init)"}')"
    [[ "$output" ]] || output="$(echo "$status" | awk '/# On branch/ {print $4}')"
    [[ "$output" ]] || output="$(git branch | perl -ne '/^\* (.*)/ && print $1')"
    flags="$(
    echo "$status" | awk 'BEGIN {r=""} \
    /^# Changes to be committed:$/ {r=r "+"}\
    /^# Changes not staged for commit:$/ {r=r "!"}\
    /^# Untracked files:$/ {r=r "?"}\
    END {print r}'
    )"
    if [[ "$flags" ]]; then
    output="$output$c1:$c0$flags"
    fi
    echo "$c1[$c0$output$c1]$c9"
    }

    # SVN info.
    function prompt_svn() {
    prompt_getcolors
    local info="$(svn info . 2> /dev/null)"
    local last current
    if [[ "$info" ]]; then
    last="$(echo "$info" | awk '/Last Changed Rev:/ {print $4}')"
    current="$(echo "$info" | awk '/Revision:/ {print $2}')"
    echo "$c1[$c0$last$c1:$c0$current$c1]$c9"
    fi
    }

    # Maintain a per-execution call stack.
    prompt_stack=()
    trap 'prompt_stack=("${prompt_stack[@]}" "$BASH_COMMAND")' DEBUG

    function prompt_command() {
    local exit_code=$?
    # If the first command in the stack is prompt_command, no command was run.
    # Set exit_code to 0 and reset the stack.
    [[ "${prompt_stack[0]}" == "prompt_command" ]] && exit_code=0
    prompt_stack=()

    # While the simple_prompt environment var is set, disable the awesome prompt.
    [[ "$simple_prompt" ]] && PS1='\n$ ' && return

    prompt_getcolors
    # http://twitter.com/cowboy/status/150254030654939137
    PS1="\n"
    # svn: [repo:lastchanged]
    PS1="$PS1$(prompt_svn)"
    # git: [branch:flags]
    PS1="$PS1$(prompt_git)"
    # misc: [cmd#:hist#]
    # PS1="$PS1$c1[$c0#\#$c1:$c0!\!$c1]$c9"
    # path: [user@host:path]
    PS1="$PS1$c1[$c0\u$c1:$c0\w$c1]$c9"
    PS1="$PS1\n"
    # date: [HH:MM:SS]
    PS1="$PS1$c1[$c0$(date +"%H$c1:$c0%M$c1:$c0%S")$c1]$c9"
    # exit code: 127
    PS1="$PS1$(prompt_exitcode "$exit_code")"
    PS1="$PS1 \$ "
    }

    PROMPT_COMMAND="prompt_command"

    alias serve=serve