1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | function myprompt
{
# set color names
# normal
local BK="\[\O33[0;30m\]" # black
local BL="\[\033[0;34m\]" # blue
local GR="\[\033[0;32m\]" # green
local CY="\[\033[0;36m\]" # cyan
local RD="\[\033[0;31m\]" # red
local PL="\[\033[0;35m\]" # purple
local BR="\[\033[0;33m\]" # brown
local GY="\[\033[1;30m\]" # grey
# enhanced
local eGY="\[\033[0;37m\]" # light gray
local eBL="\[\033[1;34m\]" # light blue
local eGR="\[\033[1;32m\]" # light green
local eCY="\[\033[1;36m\]" # light cyan
local eRD="\[\033[1;31m\]" # light red
local ePL="\[\033[1;35m\]" # light purple
local eYW="\[\033[1;33m\]" # yellow
local eWT="\[\033[1;37m\]" # white
# reset to teminal default
local NRML="\[\033[0;0m\]" # normal term color
# what user am i?
local me=`whoami`
# setup user-based colors schemes.
# play around in here for global settings
# or create ~/.mprc for local override.
case $me in
# root) # system god
# local UCHR="# " # root prompt character
# local UCLR=$eYW # root prompt color
# local NCLR=$PL # username color
# local ATCLR=$CY # @ sign color
# local HCLR=$eBL # host name color
# local BRKT=$eBL # bracket color
# local PARN=$CY # parens color
# local DCLR=$CY # dash color
# local SCLR=$CY # slash color
# local TCLR=$eBL # time color
# local COCLR=$BL # colon color
# local DTCLR=$eBL # date color
# local DIR=$eCY # current directory color
# local TXT=$NRML # root text color
# local CCHR="->" # line continuation character
# local CCLR=$GY # line continuation character color
# ;;
*) # mere mortals
local UCHR="\\$ " # user prompt character
local UCLR=$eRD # user prompt color
local NCLR=$RD # username color
local ATCLR=$eRD # @ sign color
local HCLR=$RD # host name color
local BRKT=$eRD # bracket color
local PARN=$GY # parens color
local DCLR=$CY # dash color
local SCLR=$GY # slash color
local TCLR=$GR # time color
local COCLR=$BL # colon color
local DTCLR=$eGL # date color
local DIR=$RD # current directory color
local TXT=$NRML # user text color
local CCHR="-> " # line continuation character
local CCLR=$GY # line continuation character color
;;
esac
PS2="$eRD>$RD>$eGY> "
local PROMPT_STYLE=$1
case $PROMPT_STYLE in
short)
PS1="$HCLR\h $BRKT[$DIR \w $BRKT]$UCLR$UCHR$TXT"
#PS2="$CCLR$CCHR$TXT"
;;
ext)
DCSIZE="\$(ls --si -s | head -1 | awk '{print \$2}')"
DCCONT="\$(ls -l | grep \"^-\" | wc -l | tr -d \" \")"
SYSU="\$(uptime | sed 's/.*://; s/,//g')"
PS1="$NCLR\u$ATCLR@$HCLR\h.$(domainname)$DCLR $PARN[$TCLR \$(date '+%H%M%S')$SCLR | $eGR${DCCONT} ${GR}Files $eGR$DCSIZE${GR} Total $SCLR|$GR$SYSU $SCLR$PARN]\n$ePL\l $PARN[$DIR\w$PARN] $UCLR$UCHR$TXT"
#PS2="$CCLR$CCHR$NRML"
;;
mini)
PS1="$UCLR$UCHR$TXT$NRML"
PS2=">"
;;
-h | --help)
echo
echo myprompt: a multi-mode color prompt generator
echo usage: [myprompt \| mp] [short \| ext \| mini \| -h \| --help]
echo
echo Source and call from .bashrc with parameters
echo to modify the color and layout of the bash prompt.
echo
;;
*)
if [ "$TERM" = "dumb" ]; then
alias ls='ls --color=none'
PS1="\h \W % "
else
PS1="$RD\h $ePL\l $eRD\W $RD$UCHR$NRML"
fi
;;
esac
}
function mp
{
myprompt $1
} |