As the prompts you use become more complex, it becomes more and more
cumbersome to type them in at the prompt, and more practical to make them
into some sort of text file. I have adopted the method used by the
Bashprompt package (discussed later in this document: Chapter 8), which is to put the primary commands
for the prompt in one file with the PS1 string in particular defined within
a function of the same name as the file itself. It's not the only way to
do it, but it works well. Take the following example:
#!/bin/bash
function tonka {
# Named "Tonka" because of the colour scheme
local WHITE="\[\033[1;37m\]"
local LIGHT_BLUE="\[\033[1;34m\]"
local YELLOW="\[\033[1;33m\]"
local NO_COLOUR="\[\033[0m\]"
case $TERM in
xterm*|rxvt*)
TITLEBAR='\[\033]0;\u at \h:\w\007\]'
;;
*)
TITLEBAR=""
;;
esac
PS1="$TITLEBAR\
$YELLOW-$LIGHT_BLUE-(\
$YELLOW\u$LIGHT_BLUE at $YELLOW\h\
$LIGHT_BLUE)-(\
$YELLOW\$PWD\
$LIGHT_BLUE)-$YELLOW-\
\n\
$YELLOW-$LIGHT_BLUE-(\
$YELLOW\$(date +%H%M)$LIGHT_BLUE:$YELLOW\$(date \"+%a,%d %b %y\")\
$LIGHT_BLUE:$WHITE\\$ $LIGHT_BLUE)-$YELLOW-$NO_COLOUR "
PS2="$LIGHT_BLUE-$YELLOW-$YELLOW-$NO_COLOUR "
}
You can work with it as follows:
[giles at nikola:/bin (4.498 Mb)]$ cd
[giles at nikola:~ (0 Mb)]$ vim tonka
...
[giles at nikola:~ (0 Mb)]$ source tonka
[giles at nikola:~ (0 Mb)]$ tonka
[giles at nikola:~ (0 Mb)]$ unset tonka
Move to the directory where you want to save the prompt
Edit the prompt file with your preferred editor
Enter the prompt text given above as "tonka"
Read the prompt function into the environment
Execute the prompt function
Optionally, unclutter your environment by unsetting the function
Has tapped premier talent in the Internet industry for our content and each and every issue will contain practical advice and insights for website owners.