Okt. 4, 2007

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:

Kategorien Linux Software
Tagged Bash Prompt Escape-Codes Scripting

2 Kommentare

Kommentare
Juni 1, 2008 01:35 - Suchworte [laxu]

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

Nov. 19, 2009 14:21 - Bash-Prompt [laxu]

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


Kommentar schreiben