#!/bin/bash ################################################## # Fancy PWD display function ################################################## # The home directory (HOME) is replaced with a ~ # The last pwdmaxlen characters of the PWD are displayed # Leading partial directory names are striped off # /home/me/stuff -> ~/stuff if username=me # /usr/share/big_dir_name -> ../share/big_dir_name if pwdmaxlen=20 ################################################## rewrite_pwd() { # how many characters of the $PWD should be kept local pwdmaxlen=25 # indicate that there has been dir truncation local trunc_symbol=".." local dir=${PWD##*/} pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen )) NEW_PWD=${PWD/$HOME/~} local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen )) if [ ${pwdoffset} -gt "0" ] then NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen} NEW_PWD=${trunc_symbol}/${NEW_PWD#*/} fi } # rewrites the PS1 bash prompt var rewrite_prompt() { local NONE='\[\033[0m\]' # unsets color to term's fg color # regular colors local K='\[\033[0;30m\]' # black local R='\[\033[0;31m\]' # red local G='\[\033[0;32m\]' # green local Y='\[\033[0;33m\]' # yellow local B='\[\033[0;34m\]' # blue local M='\[\033[0;35m\]' # magenta local C='\[\033[0;36m\]' # cyan local W='\[\033[0;37m\]' # white # empahsized (bolded) colors local EMK='\[\033[1;30m\]' local EMR='\[\033[1;31m\]' local EMG='\[\033[1;32m\]' local EMY='\[\033[1;33m\]' local EMB='\[\033[1;34m\]' local EMM='\[\033[1;35m\]' local EMC='\[\033[1;36m\]' local EMW='\[\033[1;37m\]' # background colors local BGK='\[\033[40m\]' local BGR='\[\033[41m\]' local BGG='\[\033[42m\]' local BGY='\[\033[43m\]' local BGB='\[\033[44m\]' local BGM='\[\033[45m\]' local BGC='\[\033[46m\]' local BGW='\[\033[47m\]' local UC=$C # username's color [ $UID -eq "0" ] && UC=$R # root's color # rewrite prompt PS1="\${__prompt_environment}[\\t] ${G}\u@\h> \${NEW_PWD} ${C}\$(git_branch)\${NONE}${NONE}\n$ " } # adds ~/.ssh/config to the ssh autocomplete ssh_load_autocomplete() { complete -W "$(awk '/^\s*Host\s*/ { sub(/^\s*Host /, ""); print; }' ~/.ssh/config)" ssh } # adds Git autocompletion if [ -f ~/.bin/git-completion.bash ]; then . ~/.bin/git-completion.bash fi PROMPT_COMMAND=rewrite_pwd rewrite_prompt