[Logo]

Tipp: (Bash-)Prompt verändern

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:

2 Responses to “Tipp: (Bash-)Prompt verändern”

  1. Suchworte [laxu] Says:

    [...] konsole schriftfarbe ändern” – Dazu habe ich hier einige Tipps [...]

  2. Bash-Prompt [laxu] Says:

    [...] ein neuer Post zu praktischen Bash-Prompts, nachdem ich den alten doch wieder um einiges überarbeitet [...]

Leave a Reply