Bash-Prompt
Mal ein neuer Post zu praktischen Bash-Prompts, nachdem ich den alten doch wieder um einiges überarbeitet habe.Ziele:
- Übersichtlichkeit
- Möglichst lange Eingabezeilen ohne Umbruch
- Prompt soll auf verschiedenen Hosts unterscheidbar sein
- Der Prompt soll möglichst informativ sein.
- Zweizeiliger Prompt, eine Zeile mit vielen Informationen, eine mit nur einem > und der Eingabe dahinter.
- Username und Hostname Farbkodiert, geschieht automatisch ueber eine Hashing-Funktion
- Zeitausgabe ermöglicht es einfach zu sehen wann der Befehl beendet wurde, und damit auch wie lange er gebraucht hat.
- Smiley in der Ausgabe zeigt ob der Befehl korrekt gelaufen ist (Return Code 0 = kein Fehler)
12:59:56 :-) username@hostname:~
Die .bashrc dazu:
>
# If running interactively, then:
if [ "$PS1" ]; then
## aendert den xterm-Titel in das zuletzt benutzte Kommando usw.
xtitle() {
echo -ne "\033]0;[$(history 1 | cut -b 8-30)] $USER@$HOSTNAME:$PWD\007";
}
setps1() {
if [ $? -eq 0 ];then smiley=":-)"; else smiley=":-(";fi
export PS1="\t $smiley \[`hashcolor $USER`\]\u\[$grey\]@\[`hashcolor $HOSTNAME`\]\H\[$grey\]:\[$yellow\]\w\n\[$normal\]> "
}
if [ "${TERM}" != "linux" ]; then
prompt() {
setps1
xtitle
}
else
prompt() {
setps1
}
fi
PROMPT_COMMAND='prompt'
finormal='\e[0m'
black='\e[0;30m'
bblack='\e[1;30m'
red='\e[0;31m'
bred='\e[1;31m'
green='\e[0;32m'
bgreen='\e[1;32m'
yellow='\e[0;33m'
byellow='\e[1;33m'
blue='\e[0;34m'
bblue='\e[1;34m'
purple='\e[0;35m'
bpurple='\e[1;35m'
blue2='\e[0;36m'
bblue2='\e[1;36m'
white='\e[0;37m'
bwhite='\e[1;37m'
grey='\e[0;39m'
bgrey='\e[1;39m'bgnorm='\e[0;0m'
bgblack='\e[0;40m'
bgred='\e[0;41m'
bggreen='\e[0;42m'
bgyellow='\e[0;43m'
bgblue='\e[0;44m'
bgpurple='\e[0;45m'
bgblue2='\e[0;46m'
bggrey='\e[0;47m'function hashcolor {
case $(echo $1|md5sum|cut -b 1) in
0)echo -en $red;;
1)echo -en $bblue;;
2)echo -en $green;;
3)echo -en $bgrey;;
4)echo -en $yellow;;
5)echo -en $byellow;;
6)echo -en $blue;;
7)echo -en $bred;;
8)echo -en $purple;;
9)echo -en $bpurple;;
a)echo -en $blue2;;
b)echo -en $bblue2;;
c)echo -en $grey;;
d)echo -en $bgreen;;
e)echo -en $white;;
f)echo -en $bwhite;;
esac
}
Die interessanten Manpages zu dem Thema sind:
- man console_codes erklärt die Escape Codes z.B. für Farben oder auch um den Titel eines X-Terminals zu ändern.
- man bash erklärt, dass man Farbcodes in \[...\] einschliessen sollte, damit sie den Zeilenumbruch im Prompt nicht kaputt machen.
| Kategorien | Software Linux |
|---|---|
| Tagged | Bash Prompt color farben |
3 Kommentare