# 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