Globenaut

Jeder hat das Recht auf Meinungsfreiheit und freie Meinungsäußerung; dieses Recht schließt die Freiheit ein, Meinungen ungehindert anzuhängen sowie über Medien jeder Art und ohne Rücksicht auf Grenzen Informationen und Gedankengut zu suchen, zu empfangen und zu verbreiten.
Die Allgemeine Erklärung der Menschenrechte
Resolution 217 A (III) vom 10.12.1948/Artikel 19
Zensoren sind Verbrecher!
BPjM: Trusted Censorship
Christliche Werte — Neine Danke!

Skripttipp #9: Farbige Textausgabe im Terminal

von Globenaut am 3.8.09

Werden Farben richtig eingesetzt, erleichtern sie die Erkennung durch ihre strukturierende Wirkung ungemein. Das gilt auch für das Terminal, leider sind dort die Farbkennungen weder leicht zu errinnern, noch erhöhen sie die Lesbarkeit des Skriptes. Um dieses Problem zu umgehen, kann man sich eine kleine Funktion schreiben, der man als Parameter einen Text und einen Farbnamen übergibt. Die Funktion erledigt den Rest und gibt den Text farbig auf dem Terminal aus.

function Farbige_Textausgabe ()
{
 local Farbe
 case "$2" in
  r* ) Farbe='31m' ;;            #rot
  ge* ) Farbe='1;33m' ;;         #gelb
  gr* ) Farbe='1;32m' ;;         #grün
  b* ) Farbe='34m' ;;            #blau
 esac
 echo -e "\e[$Farbe$1\e[0m"
}

Hier sind nur vier Farben definiert worden, aber jedem steht es frei weitere hinzuzufügen. Der Aufruf in einem Skript erfolgt dann ganz einfach:

#!/usr/bin/env bash
...
s='Es ist ein Fehler aufgetreten'
...
Farbige_Textausgabe $s rot
...

Bleibt noch die Frage zu klären, wohin mit der Funktion? Man kann sie in die .bashrc einfügen, aber wer öfter mit Skripten arbeitet sollte alle häufiger benutzten Funktionen in eine Datei (bspw. Funktionenbibliothek) schreiben, welche am Anfang eines jedes Skriptes „gesourced“ wird:

#!/usr/bin/env bash
# Autor         
# erstellt     
# geändert     
# Beschreibung  
# Parameter      
 
source $HOME/bin/Funktionenbibliothek
...
exit 0

So vorbereitet kann an jeder Stelle des Skriptes jetzt die Funktion Farbige_Textausgabe aufgerufen werden. Das Skript bleibt gut lesbar und übersichtlicher, genauso wie die Ausgabe. Jetzt muß man sich nur an ein Farbschema halten, bspw. Fehlermeldungen rot, Hinweise gelb und Erfolgsmeldungen grün.

Welche Farbkombinationen gibt es und wie sehen sie auf dem Bildschirm aus? Diese Frage beantwortet ein kleines Skript, welches alle Kombinationen aus Zeichen- und Hintergrundfarbe und ihre jeweilige Codierung ausgibt:

#!/usr/bin/env bash
#
# Dateiname  Farbtabelle
# Autor   Globenaut
# erstellt  15.11.2007
# geändert  03.08.2008
# Beschreibung Gibt eine Tabelle der ANSI-Farben aus.
# Parameter  $1: kurzer Probetext (3 Zeichen!), optional.

 t=${1:-gM8}
 echo -e "\n              40m   41m   42m   43m   44m   45m   46m   47m"
 for VGe in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' '  36m' '1;36m' '  37m' '1;37m';
 do VG=${VGe// /}
  echo -en " $VGe \e[$VG $t "
  for HG in 40m 41m 42m 43m 44m 45m 46m 47m;
  do
   echo -en " \e[$VG\e[$HG $t \e[0m"
  done
  echo
 done
 echo

Wird beim Aufruf dem Skript kein Parameter übergeben, wird gM8 (ein Buchstabe mit Unterlänge, ein breiter Großbuchstabe und eine Ziffer) als Beispieltext verwendet, andernfalls der Text aus dem Parameter. Bei mehr als drei Zeichen gerät allerdings die Tabelle durcheinander. Das Endergebnis sollte in etwa so aussehen:

Ansi-Farbtalle vor schwarzen Hintergrund
Ansi-Farben vor schwarzem Terminalhintergrund

Labels: , , , ,

#
Kommentare:
Kommentar veröffentlichen

Neuester Eintrag
Piratenblogger
Glauben ist die mutwillige Nichtbenutzung des Verstandes!
Bundestagswahl 2009: Weg mit dem Gesindel von SPD und C*U!
© 2005-2009, GlobenautDieses Blog wird unterstützt von Blogger.