Spaß in ASCII-Art: cowsay und FIGlet

Hast du dir schon einmal gewünscht, die Standardausgabe lustiger zu gestalten? Dieser Artikel beschreibt zwei Programme zum generieren einer nicht ganz so standardisierten Ausgabe in der Shell: cowsay und figlet.

Was ist ASCII Art?

ASCII Art ist Kunst, die größtenteils auf Computern präsentiert wird und aus den 95 (von den 128) druckbaren Zeichen des ASCII-Standards besteht, die geschickt zu Piktogrammen zusammengesetzt werden. Weitere Informationen dazu gibt es hier.

Installation

Wenn du Glück hast, sind Cowsay und Figlet bereits in den Paketquellen deiner Distribution enthalten. In Debian, Ubuntu und deren Derivaten ist dies der Fall. Um unter Debian/Ubuntu die benötigte Software zu installieren gib folgendes in die Shell ein:

sudo apt-get install cowsay figlet

Nach ein Paar Sekunden kannst du die Programme bereits nutzen. Natürlich kannst du auch Synaptic oder andere Alternativen für die Installation nutzen.

Cowsay und Cowthink

Cowsay/Cowthink ist ein Programm, das eine ASCII-Kuh (oder auch andere Tiere, darauf gehe ich später noch näher ein) generiert, welche Text in einem Comic-artigem Stil präsentiert. Damit kannst du also ASCII-Tiere ihren (deinen) Senf zu allem abgeben lassen.
Du hast es bestimmt schon erraten: Der Unterschied zwischen cowsay und cowthink ist die Art der Blasen, die generiert werden. Cowsay für Sprechblasen und cowthink für Denkblasen. :-)

Ok, los gehts:
Cowsay
Das war die Ausgabe von:

cowsay "Pimpmyshell rockt"

Neben diesem Befehl gibt es noch einige Optionen (Parameter), welche deinen Text noch ein wenig cooler aussehen lassen.

Probieren wir folgenden Befehl aus:

cowsay -f name "beispiel_text"

Das würde beispiel-text mit dem Tier name erzeugen.

Die verfügbaren Tiere können in /usr/share/cowsay/cows (Pfad kann variieren) gefunden werden.

In meinem Fall gibt

ls /usr/share/cowsay/cows

Folgende Liste von Dateien aus:

apt.cow eyes.cow moofasa.cow surgery.cow
beavis.zen.cow flaming-sheep.cow moose.cow telebears.cow
bong.cow ghostbusters.cow mutilated.cow three-eyes.cow
bud-frogs.cow head-in.cow ren.cow turkey.cow
bunny.cow hellokitty.cow satanic.cow turtle.cow
cheese.cow kiss.cow sheep.cow tux.cow
cower.cow kitty.cow skeleton.cow udder.cow
daemon.cow koala.cow small.cow vader.cow
default.cow kosh.cow sodomized.cow vader-koala.cow
dragon-and-cow.cow luke-koala.cow sodomized-sheep.cow www.cow
dragon.cow mech-and-cow.cow stegosaurus.cow
elephant.cow meow.cow stimpy.cow
elephant-in-snake.cow milk.cow supermilker.cow

Statt name lässt sich also einer dieser Dateinamen (ohne die Endung (.cow) ) eintragen. Einer meiner lieblinge ist:

cowsay -f vader "I'm your father"

Cowsay Cowth Vader

Ein anderer interressanter Weg zum personalisieren unserer Kuh, ist die Form der Augen zu verändern. Dafür gibt es folgende Optionen:

-b -d -t -y -g -p -s -w

Anstatt dass ich jetzt alle Optionen ausführe, schlage ich vor das Programm mit einem der Optionen selbst auszuprobieren, um mit eigenen Augen zu sehen was passiert (oder wie sich die Kuh verändert).

Ein weiterer Weg, die Form der Augen zu verändern ist:

-e "form_der_augen"

Der Befehl:

cowsay -e "TT" "Pimpmyshell"

zum Beispiel gibt folgendes aus:
Cowsay

Die Augen müssen nicht unbedingt symetrisch sein. Ausserdem sind die Augen auf zwei Zeichen begrenzt. Jeder Versuch also, die Augen irgendwie komplizierter zu gestalten wird leider fehlschlagen.

Unglücklicherweise funktioniert die Option -e auch nur mit der Standard ASCII-Kuh.

Zum Schluss sei die Option

-W anzahl_der_spalten

erwähnt, wobei anzahl_der_spalten definiert, wie lang (in Spalten) eine Textzeile sein darf.

Wenn anzahl_der_spalten auf “10″ gesetzt wird, werden neun Zeichen in der ersten Zeile ausgegeben und der zehnte in die nächste Zeile verschoben.

Die Ausgabe von:

cowsay -W 4 "Pimpmyshell rockt"

würde also wie folgt aussehen:
Cowsay Pimpmyshell rockt

Am Ende muss ich noch erwähnen, dass Cowsay in PERL geschrieben wurde. Prüfe also vor der Installation PERL auf deinem System vorhanden ist. Wenn Cowsay nicht in deinen Paketquellen enthalten ist, kannst du es hier herunterladen.

Ein letzter Tipp noch:
Du willst deine generierte ASCII-Kuh in einer Datei speichern? Kein Problem. Du musst lediglich die Ausgabe von Cowsay in eine Datei umleiten. Und zwar so:

cowsay "Pimpmyshell" >> datei.txt

Dieser Befehl speichert die Ausgabe von Cowsay in die Datei “datei.txt”.

Figlet

Schluss mit dem vielem Gerede über Kühe, weiter gehts zum nächsten Programm – Figlet.
Figlet (oder korrekter FIGlet) ist ein Programm zum generieren ornament-ähnlicher Schriftzüge. Anders als bei Cowsay bilden hier die Schriftzüge die ASCII Art, nicht der Rahmen drumherum.

Um mit Figlet einen Schriftzug zu generieren, gib folgenden Befehl ein:

figlet Pimpmyshell rockt

oder auch

figlet "Pimpmyshell rockt"

, was folgende Ausgabe erzeugen wird:
Figlet

Im normalfall betrachtet figlet alle Argumente als zu erzeugenden Text. Wenn du Optionen benutzt, muss der Text in Anführungszeichen gesetzt werden. Eine der am meisten genutzten Optionen ist kerning, was nichts anderes bedeutet, als dass ein Leerzeichen zwischen die Buchstaben gesetzt wird. Um kerning zu nutzen, muss die Option -k angegeben werden. Der oben generierte Schriftzug zum Beispiel wird wie folgt aussehen:

figlet -k "Pimpmyshell rockt"

Figlet mit kerning
Man sieht den Unterschied, oder? Eine weitere Option ist die Textausrichtung. Es gibt 3 Standardpositionen:

  • Nach Links ausgerichtet (Option -l),
  • Nach Rechts ausgerichtet (Option -r),
  • Zentriert (Option -c).

Figlet erlaubt die generierung von Schriftzügen, die diverse Schriftarten nachahmen. Abgesehen von der vorgegebenen Schriftart lassen sich noch ein Paar andere auswählen. Eine Liste der verfügbaren Schriftarten ist im Verzeichnis /usr/share/figlet (die dateien mit der Endung “.flf.”) zu finden.

Um eine bestimmte Schriftart zu nutzen, kann die Option -f schriftart verwendet werden, wobei schriftart den Dateinamen der Schriftart (ohne die Endung) darstellt.

So lässt sich etwa der Schriftzug “Pimpmyshell rockt” in Schreibschrift darstellen:
Der Befehl:

figlet -f script "Pimpmyshell rockt"

Und seine Ausgabe:
Figlet

Da wäre ausserdem noch die Option -d verzeichnis was figlet Schriftarten aus verzeichnis nutzen lässt.

Und noch viele weitere Optionen, welche ich hier jetzt aber nicht weiter ausführen werde (dafür sind die Manpages da).

Die Website von Figlet ist übrigens nicht die einzige ihrer Art. Wegen seiner Popularität existieren noch eine Menge anderer im Internet. Figlet-Schriftzüge lassen sich hier sogar im Webbrowser erzeugen.

Dieser Artikel wurde von mir mit freundlicher Genehmigung von Borys Musielak ins Deutsche übersetzt und leicht verändert. Original article: ASCII-Art fun: cowsay and FIGlet at PolishLinux.org.


Über diesen Beitrag


  1. jesse 15.7.2007 / 2:10

    cowsay -f sodomized :D

  2. Philipp Tölke 15.7.2007 / 9:04

    Dem wäre noch ‘figlet Text | cowsay -n’ hinzuzufügen…

  3. meillo 15.7.2007 / 17:39

    Netter Artikel :-)

  4. Jeremy 15.7.2007 / 17:51

    Danke. ;-)

  5. Dietmar 16.7.2007 / 10:14

    Versucht doch das mal:

    g@home> for p in `cowsay -l | grep -v ‘Cow files’ | sed ‘s/ /\n/g’` ; do figlet $p | cowsay -n -f $p ; done

  6. lionstarr 16.7.2007 / 12:17

    Lol, das mach richtig spaß.
    @Dietmar netter Trick

  7. Nemesis#13 20.7.2007 / 2:56

    figlet `echo “welcome 2 \`uname -n\`”` | cowsay -n -f tux

    gibt einen schönen login :-)

  8. keinen bock auf nen account 16.8.2007 / 20:16

    In deiner Applicationlist fehlt:
    http://bashburn.sourceforge.net/

  9. Jeremy 16.8.2007 / 20:32

    Ähm, ja. Und was hat das bitte mit diesem Artikel zu tun?

  10. keinen bock auf nen account 18.8.2007 / 10:26

    Nichts!

  11. Christian Stankowic 11.10.2007 / 20:43

    Hehe, jap, nette Sache, besonders lustig ist allerdings:

    ls -all / | figlet

    :D

  12. Paul 16.1.2010 / 14:25

    ls | figlet -f script | cowsay -n

  13. nibbler 28.12.2010 / 14:10

    bash 2>&1 | figlet -w150

    bash in figlet.

Hinterlasse einen Kommentar

XHTML: Folgende Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>




Safari hates me