Advertisement
h3xx

ultimate .bashrc-prompt

Aug 5th, 2011
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.17 KB | None | 0 0
  1. # .bashrc-prompt
  2.  
  3. ## prompt
  4. #PS1="\\u@\\h:\\w\\$ " #factory default
  5. ## define colors
  6. BLACK='\e[30m'
  7. RED='\e[31m'
  8. GREEN='\e[32m'
  9. YELLOW='\e[33m'
  10. BLUE='\e[34m'
  11. MAGENTA='\e[35m'
  12. CYAN='\e[36m'
  13. WHITE='\e[37m'
  14. #BRIGHT='\e[01m'
  15. #NORMAL='\e[0m'
  16. #BLINK='\e[05m'
  17. #REVERSE='\e[07m'
  18.  
  19. # note: must be `function [FUNCNAME]' declaration otherwise Bash will throw an
  20. #   error
  21. #   ... No, I don't know why.
  22.  
  23. function _cmod() {
  24.     local \
  25.         mod="$1"
  26.     shift 1
  27.  
  28.     if [ -n "$*" ]; then
  29.         echo "$*" |
  30.         sed -e 's,\\e\[\([0-9]*;\)\?,\\e['"$mod"';,g'
  31.     else
  32.         echo '\e['"$mod"'m'
  33.     fi
  34. }
  35.  
  36. function BRIGHT() {
  37.     _cmod 01 "$*"
  38. }
  39.  
  40. function NORMAL() {
  41.     _cmod 0 "$*"
  42. }
  43.  
  44. function BLINK() {
  45.     _cmod 05 "$*"
  46. }
  47.  
  48. function REVERSE() {
  49.     _cmod 07 "$*"
  50. }
  51.  
  52.  
  53. case "$HOSTNAME" in
  54.     'necronomicon.slackware')
  55.         BASE_COLOR="$RED"
  56.         BASE_COLOR_ROOT="$BLUE"
  57.         ;;
  58.     'shell.sf.net')
  59.         BASE_COLOR="$GREEN"
  60.         BASE_COLOR_ROOT="$YELLOW"
  61.         ;;
  62.     *)
  63.         BASE_COLOR="$MAGENTA"
  64.         BASE_COLOR_ROOT="$CYAN"
  65.         ;;
  66. esac
  67.  
  68. if [ "$UID" -eq 0 ]; then
  69.     PS1='\['$(BRIGHT "$BLACK")'\]=[\l \['$BASE_COLOR_ROOT'\]\u\['$(NORMAL "$WHITE")'\]@\['$BASE_COLOR_ROOT'\]\h\['$WHITE'\] \w \['$(BRIGHT "$BLACK")'\]]=\['$WHITE'\] \$\['$(NORMAL)'\] '
  70.  
  71. else
  72.     PS1='\['$(BRIGHT "$BLACK")'\]=[\l \['$BASE_COLOR'\]\u\['$(NORMAL "$WHITE")'\]@\['$BASE_COLOR'\]\h\['$WHITE'\] \w \['$(BRIGHT "$BLACK")'\]]=\['$WHITE'\] \$\['$(NORMAL)'\] '
  73. fi
  74.  
  75. # prepend error string checking, as any prior command will overwrite $?
  76. #PROMPT_COMMAND="err=\$?; [ \$err -ne 0 ] && echo -e '$NORMAL$YELLOW'\"[\$err]\"${PROMPT_COMMAND:+ ; $PROMPT_COMMAND}"
  77. ## (this one ensures $err doesn't escape and uses better quoting)
  78. PROMPT_COMMAND='(err="$?"; [ "$err" -eq 0 ] || echo -e '\'"$(NORMAL "$YELLOW")"\''"[$err]")'"${PROMPT_COMMAND:+ ; $PROMPT_COMMAND}"
  79.  
  80. # clean up
  81. unset \
  82.     BLACK \
  83.     RED \
  84.     GREEN \
  85.     YELLOW \
  86.     BLUE \
  87.     MAGENTA \
  88.     CYAN \
  89.     WHITE \
  90.     BRIGHT \
  91.     NORMAL \
  92.     BLINK \
  93.     REVERSE \
  94.     _cmod \
  95.     BASE_COLOR \
  96.     BASE_COLOR_ROOT
  97.  
  98. # April Fools' Day prank
  99. if [ "$(date +%m%d)" == '0401' ]; then
  100.     PROMPT_COMMAND+=' ; (if [ $RANDOM -le 8000 ]; then printf "\0337\033[%d;%dH\033[4%dm \033[m\0338" $((RANDOM%LINES+1)) $((RANDOM%COLUMNS+1)) $((RANDOM%8)); fi)'
  101. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement