[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[stick@richnet.net: Re: ANSI Color Escapes in $PS1.. heh.]



Forwarded on request. This sure has charm ;)

Marcus

----- Forwarded message from stick@richnet.net -----

Delivered-To: Marcus.Brinkmann@ruhr-uni-bochum.de
Subject: Re: ANSI Color Escapes in $PS1.. heh.
To: Marcus.Brinkmann@ruhr-uni-bochum.de (Marcus Brinkmann)
Date: Tue, 8 Dec 1998 00:36:51 -0500 (EST)
From: stick@richnet.net
Reply-to: stick@richnet.net
X-UIDL: d541f21f09d02714a084baa0f026dcfa

So this is a little late...had some e-mail issues that took too long to
sort-out...

Marcus Brinkmann said
> On Wed, Dec 02, 1998 at 12:41:06PM -0600, Ryan King wrote:
> > Just how stupid an idea did I have when I did this:
> > 
> > $PS1="[\e[31m\h\e[m:\e[34m\u\e[m:\e[31m\w\$\e[m]"
> > 
> > in my /etc/profile?
> > 
> > It looks really nifty until I try to do commands that wrap around, in which
> > case the first line returns, but keeps going on the current spot.
> 
> What the other said, is correct, so you already know what is happening here.
> However, here is just another example for you:
> 
> # ~/.bash_profile: executed by bash(1) for login shells.
> 
> [...snipped...]
> 
>   set_prompt ()
>   {
>     local SAVE_CRS=`tput sc 2> /dev/null`
>     local RESET_CRS=`tput rc 2> /dev/null`
>     local CLOCKPOS=`tput cup 0 $(($HZ-10)) 2> /dev/null`
>     local FOREG=`tput setaf 6 2> /dev/null` #4
>     local ALT_FOREG=`tput setaf 3 2> /dev/null` #4
>     local BACKG=`tput setab 0 2> /dev/null` #6
>     local NORMAL=`tput sgr0 2> /dev/null`
>     local BOLD=`tput bold 2> /dev/null`
> 
>     PS1="\[${NORMAL}${SAVE_CRS}${CLOCKPOS}${FOREG}${BACKG}${BOLD} \@ ${RESET_CRS}${BOLD}${ALT_FOREG}\]\u\[${NORMAL}\]@\h:\w\$ "
>   }
>   set_prompt
> 
I took this a little over-the-top, but it was a fun excersize.  Here's
my adaptations to set_prompt():


	set_prompt () 
	    { 
	    local EUID=$1;
	    local NORMAL=`tput sgr0 2> /dev/null`;
	    local BOLD=`tput bold 2> /dev/null`;
	#   local DIM=`tput dim 2> /dev/null`;
	    local BLINK=`tput blink 2> /dev/null`;
	#   local REVERSE=`tput rev 2> /dev/null`;
	#   local STANDOUT=`tput smso 2> /dev/null`;
	#   local UNDERLINE=`tput smul 2> /dev/null`;
	#   local INVISIBLE=`tput invis 2> /dev/null`;
	#   local BEEP=`tput bel 2> /dev/null`;
	#   local HOME=`tput home 2> /dev/null`;
	#   local CLEAR=`tput clear 2> /dev/null`;
	#   local FG_BLACK=`tput setaf 0 2> /dev/null`;
	    local FG_RED=`tput setaf 1 2> /dev/null`;
	#   local FG_GREEN=`tput setaf 2 2> /dev/null`;
	    local FG_YELLOW=`tput setaf 3 2> /dev/null`;
	#   local FG_BLUE=`tput setaf 4 2> /dev/null`;
	#   local FG_MAGENTA=`tput setaf 5 2> /dev/null`;
	    local FG_CYAN=`tput setaf 6 2> /dev/null`;
	    local FG_WHITE=`tput setaf 7 2> /dev/null`;
	#   local BG_BLACK=`tput setab 0 2> /dev/null`;
	#   local BG_RED=`tput setab 1 2> /dev/null`;
	#   local BG_GREEN=`tput setab 2 2> /dev/null`;
	#   local BG_YELLOW=`tput setab 3 2> /dev/null`;
	#   local BG_BLUE=`tput setab 4 2> /dev/null`;
	#   local BG_MAGENTA=`tput setab 5 2> /dev/null`;
	#   local BG_CYAN=`tput setab 6 2> /dev/null`;
	#   local BG_WHITE=`tput setab 7 2> /dev/null`;

	    if [ "$EUID" == "0" ]; then
	        PS1="\[${NORMAL}${BOLD}${BLINK}${FG_RED}\]\u\[${NORMAL}${BOLD} \
	        ${FG_WHITE}\]@\[${FG_CYAN}\]\h\[${NORMAL}\]: ";
	    else
	        PS1="\[${NORMAL}${BOLD}${FG_YELLOW}\]\u\[${FG_WHITE}\]@\[\
	        ${FG_CYAN}\]\h\[${NORMAL}\]: ";
	    fi;
	    
	    PS2="\[${NORMAL}${BOLD}${FG_YELLOW}\]continue\[${NORMAL}\]> ";
	    return
	}
	
	set_prompt $EUID


For root the username is in blinking, bright red - to help remind you of
your login.  For Regular Users the username is bright yellow.  From there
it's a bright white '@' and then the hostname in bright cyan.  Oh, yeah, I
almost forgot the ": " in bright white at the end.  [Too much time waiting
for downloads...]

Use it if you want.
Chuck

PS.  Don't forget to put the set_prompt() function somewhere where it
     will get executed for those times you `su` or `su -`.
-- 
Chuck Stickelman, Owner			E-Mail:	<stick@richnet.net>
Practical Network Design		Voice:	+1-419-529-3841
9 Chambers Road				FAX:	+1-419-529-3625
Mansfield, OH 44906-1301 USA


----- End forwarded message -----

-- 
"Rhubarb is no Egyptian god."        Debian GNU/Linux        finger brinkmd@ 
Marcus Brinkmann                   http://www.debian.org    master.debian.org
Marcus.Brinkmann@ruhr-uni-bochum.de                        for public  PGP Key
http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/       PGP Key ID 36E7CD09


Reply to: