Login
Newsletter
Di, 26. November 2002, 21:04

Farbige Shell durch ANSI-Sequenzen

Will man dem grauen Alltag auf der Shell entgehen und z.B. seinem Prompt oder seinem Shell-Script ein wenig Farbe verleihen, helfen die ANSI-Sequenzen vielleicht weiter.

Von hosi

Die ANSI-Sequenz besteht aus zwei Teilen: einer Attributsequenz, die mit einem ASCII-ESC eingeleitet wird und bestimmt, ob der Text in hell, dunkel oder blinkend dargestellt wird, und der Farbsequenz, die die Farbe des Textes bestimmt. Will man zum Beispiel seine Shell freundlich begrüßen, reicht ein echo -e "\033[1;34mHallo Shell..." aus.

echo muss mit der Option -e aufgerufen werden, um das ASCII-ESC mit der oktalen \033-Notation darstellen zu können. Die eigentliche ANSI-Sequenz folgt dann mit [1;34m. Die 1 ist die erwähnte Attributsequenz und steht hier für fette Anzeige. Andere mögliche Angaben wären 0=normal, 4=unterstrichen, 5=blinkend und 7 für invertiert. Die durch das Semikolon abgetrennte 34 sorgt für eine blaue Anzeige. Hier hat man die Auswahl zwischen 30=schwarz, 31=rot, 32=grün, 33=Gelb, 34=blau, 35=violett, 36=cyan und schließlich 37=weiß. Das abschließende m ist für Farbangaben obligatorisch.

Hat man einmal die Farbe gewechselt, so kann man mit \033[0m den alten Stand wieder herstellen. Bei einem Prompt macht das durchaus Sinn, wenn man nicht die gesamte Ausgabe formatiert haben möchte. Außerdem sollte man nicht-druckbare Zeichen (wie das \033) in ein \[ und \] einschließen. Bevor man einen neuen Prompt z.B. in seine ~/.profile übernimmt, sollte man ihn vielleicht auf der Kommandozeile testen:

export PS1="\[\033[1;33m\](\A) \u@\h:\w\$\[\033[0m "

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten