IBM hat einen guten Artikel zum Thema
Prompt magic.
Oft sieht die Bash langweilig so aus:
user@host:/usr/bin$ echo $PS1
\u@\h:\w$
Das frisst bei langen Pfaden natürlich Platz:
user@host:/usr/share/doc/xserver-xorg-video-voodoo$
praktisch ist es da, \W statt \w zu verwenden:
user@host:xserver-xorg-video-voodoo$ ls
Farben erleichtern natürlich den Überblick, bis vor kurzem hab ich quasi den Gentoo Prompt genutzt:
host xserver-xorg-video-voodoo $ echo $PS1
\[\e[01;32m\]\h \[\e[01;34m\]\W $ \[\e[00m\]
Nett ist aber auch der Tipp von der IBM-Seite, den Prompt minimal zu halten, und alle Informationen in die xterm-Titlezeile zu verlagern. Sieht dann so aus:
> echo $PS1
\[\e]2;\u@\H \w\a\e[32;1m\]> \[\e[0m
Wer mag kann auch gleich die Schriftfarbe ändern:
> echo $PS1
\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\e[32;40m\]
Um die Titelinformationen auf der Linux-Konsole im Prompt zu haben, nimmt man in der .bashrc diese Abfrage:
if [ "$TERM" == "linux" ];then
export PS1="\u@\H \w\a\e[32;1m\]>\[\e[0m\e[32;40m\] "
else
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\e[32;40m\] "
fi
Und wer findet dass die ganzen Escape-Codes unschön aussehen kann sich hier bedienen:
esc='\033['black=$esc'30m'
bblack=$esc'1;30m'
red=$esc'0;31m'
bred=$esc'1;31m'
green=$esc'0;32m'
bgreen=$esc'1;32m'
yellow=$esc'0;33m'
byellow=$esc'1;33m'
blue=$esc'0;34m'
bblue=$esc'1;34m'
purple=$esc'0;35m'
bpurple=$esc'1;35m'
blue2=$esc'0;36m'
bblue2=$esc'1;36m'
white=$esc'0;37m'
bwhite=$esc'1;37m'
grey=$esc'0;39m'
bgrey=$esc'1;39m'bgnorm=$esc'XXm'
bgblack=$esc'40m'
bgred=$esc'41m'
bggreen=$esc'42m'
bgyellow=$esc'43m'
bgblue=$esc'44m'
bgpurple=$esc'45m'
bgblue2=$esc'46m'
bggrey=$esc'47m'
Beispiel:
> echo -e $bred"Warnung"
Warnung
Alle Escape-Codes und eine schöne Farbtabelle findet man in dem
IBM-Artikel.
Eine weitere interessante Anwendung sind Scripte im Prompt. so kann man z.B. testen ob ein Programm erfolgreich durchgelaufen ist:
$ PS1=':`[ $? -eq 0 ] && echo ")"||echo "("`'
:) false
:( true
:)
Dabei entspricht der Smiley jeweils dem Exitstatus des letzten Programms (0 = erfolgreich). Das lässt sich natürlich nach belieben kombinieren z.B. mit Farben.
In den xterm-Titel kann man auch automatisch den letzten Befehl reinschreiben lassen:
if [ ${TERM} == "rxvt-unicode" ]; then
xtitle() { echo -ne "\033]0;$1 $USER@$HOSTNAME:$PWD\007"; }
trap 'xtitle "[$(history 1 | cut -b 8-30)]"' DEBUG
fi
Wobei hier vorher noch abgefragt wird, ob es sich auch um ein kompatibles Terminal (hier: urxvt) handelt.
Links: