Dieser Artikel wurde von tuxorials.de (Dokuwiki) hierher migriert! Mögliche Darstellungsfehler bitte ich zu entschuldigen.

Wäre es nicht schön, in einem Shell-Script bestimmte Ausgaben hervorzuheben oder sogar farbig auszugeben. Die Vorgehensweise und die Fallstricke bei der formatierten Terminalausgabe erklärt dieser Beitrag.

Für die Formatierung innerhalb eines Terminals kann das Programm tput verwendet werden, welches eine abstrakte Möglichkeit der Konfiguration eines Terminals bietet. Es ist damit ebenfalls möglich, die Größe (Zeilen, Spalten) eines Terminalfensters zu ermitteln. Dazu aber später mehr.

Verwendung Die grundlegende Vorgehensweise beim Einsatz dieses Tools ist die, dass vor einem bestimmten Text die Ausgabe mit Hilfe von tput formatiert und nach dem Text wieder auf den Standard zurückgesetzt wird. In Shell-Scripts bietet es sich deswegen an, die Formatierungen (Die Ausgabe des tput-Befehls) in Variablen zu verfrachten, die dann beim Aufruf eines echo-Befehls einfach mit ausgegeben werden. Dies ist nur möglich, weil es sich bei den Formatierungen um bestimmte Steuerzeichen für das Terminal handelt, die bei einer Weiterverarbeitung der Ausgaben durch ein anderes Tool aber störend wirken könnten.

ft=`tput bold` 
rs=`tput sgr0` 
echo "${ft}Dieser Text ist fett${rs}"

Dieses kleine Beispiel zum Einstieg sollte eigentlich selbsterklärend sein, jedoch möchte ich auf die verwendete Art des Zugriffs auf die Variablen hinweisen. Der Einsatz der geschweiften Klammern ist hier erforderlich, da durch das nicht vorhandene Leerzeichen zwischen dem Text und der Variablen sonst keine Abgrenzung möglich wäre. Es ist ebenfalls erforderlich, dass die doppelten Hochkommata verwendet werden, weil sonst keine Ersetzung der Variablen durch ihren Wert vollzogen würde.

Der wichtigste Befehl ist tput sgr0, welcher die Terminalformatierung auf den Standard zurücksetzt.

Farben Wie schön wäre eine rote Farbe bei Fehlermeldungen oder wichtigen Hinweisen. Die Beeinflussung der Farben geschieht mit Hilfe von tput setb für den Hintergrund und tput setf für den Vordergrund. Auf diese Befehle muss eine Zahl zwischen 0 und 7 folgen, die den folgenden Farben entspricht.

  • 0: Schwarz
  • 1: Blau
  • 2: Grün
  • 3: Cyan
  • 4: Rot
  • 5: Magenta
  • 6: Gelb
  • 7: Weiß
tput setb 7
tput setf 2

Dies würde eine Farbkombination aus weißem Hintergund und grünen Vordergrund hervorrufen.

Formatierungen Mit dem Befehl tput bold wird der Text fett und mit tput smul unterstrichen ausgegeben.

und=`tput smul` 
ft=`tput bold` 
rs=`tput sgr0` 
echo "${ft}${und}Dies ist eine Überschrift, die fett und unterstrichen sein sollte${rs}"

Informationen Um z.B. die Größe des Terminalfensters zu ermitteln kann man die beiden Befehle tput cols und tput lines einsetzen, wobei der erste Befehl die Anzahl der Spalten (standardmäßig 80) und der zweite die Zeilenanzahl (24) ausgibt.