Linux im Griff

Linux-Terminal-Basics 13: Spaß haben

Auch Spaßhaben will gelernt sein - schon aus pädagogischen Gründen ;)

Zwölf + zwei Folgen habt Ihr nützliche Kleinigkeiten für den CLI-Einstieg gelernt. Aber vermutlich fühlt sich das immer noch etwas krampfig an, irgendwas in Euch schreit nach Mauszeigern und behämmerten Transparenzeffekten oder gar runden Ecken ... Aber man kann im Terminal durchaus Spaß haben. Zum Beispiel mit nerdigen Spielzeugen. Oder mit Dingen, die ohne Terminal kaum möglich wären. Mit ersten eigenen Skriptchen, Kühen, Spielen oder diesem "Internet"-Teil ...

In unserer Serie zu Linux-Terminal-Basics zeigen wir Euch, wie Ihr einige der wichtigsten Aufgaben auf der Kommandozeile erledigen könnt - vom Navigieren, über Dateioperationen, bis hin zu komplexen Suchaufträgen. Als Terminal verwenden wir Bash und auch wenn Linux im Vordergrund steht, funktioniert fast alles auch unter Windows. Und nun noch die Links zur Einleitung und zur Übersicht aller Artikel.

Eine Pipe sie alle zu knechten

Das Coolste Ding im Terminal ist eindeutig die Pipe, der popelige senkrechte Strich | - Pipe wie in Pipeline. Klar habt Ihr das schon gesehen, auch in dieser Serie, kommt ständig wie selbstverständlich daher ... Dabei ist die Pipe ein unfassbar mächtiges Werkzeug. Sie nimmt schlicht das Ergebnis eines Programms und leitet es als Argument an ein anderes weiter. Alle Tools im Terminal können problemlos zusammenarbeiten.

Nehmt mal eine typische Büro-Aufgabe: Ihr sollt 100 Texte auf Schlagwörter untersuchen, deren Vorkommen grafisch darstellen und die Grafik als Blog-Artikel veröffentlichen. Mit Standardprogrammen hieße das: Dateien in etwas wie Word öffnen, die Schlagwörter zählen (lassen), eine Tabelle in sowas wie Excel erstellen, ein Diagramm basteln und als Bild exportieren und dann zum Beispiel in Wordpress einen Beitrag erstellen und das Bild veröffentlichen.

In der Pipe-Variante könnte das auf folgende Befehlskette hinauslaufen (hier ohne Optionen):

grep | gnuplot | cp

Packt das Ganze jetzt noch in ein Skript und schon könnte die Arbeit in Zukunft mit einem einzigen Befehl erledigt sein:

mein-skript.sh die-schlagwörter.txt

Im Grunde sind Pipes Einzeiler-Skripte. Und so ein Skript könntet Ihr auch automatisch ablaufen lassen - und so vollautomatisch einen Diagramme-Blog betreiben! Wie das genau funktioniert, habe ich bei Dev-Insider in einer kleinen Serie beschrieben.

Wenn Ihr einmal verinnerlicht habt, dass die Pipe keine olle Selbstverständlichkeit ist, sondern ein super mächtiger Alles-mit-allem-Verbinder, steigt Euer Terminal-Spaß sofort und dauerhaft - sagt auch die Kuh!

Muh sagt die Kuh

Sagt sie? Hmmm ...

echo "Euer Terminal-Spaß steigt sofort und dauerhaft." | cowsay
kuh-ausgabe.
So!

Ja, sagt sie ;) Das Programm cowsay macht nichts weiter, als die Ausgabe eines Befehls in die Sprechblase einer ASCII-Kuh zu packen. Ein reiner Deko-Artikel für den Terminal.

Installation:

sudo apt install cowsay
die kuh sagt was?
Muh!

Gratis Glückskekse

Die perfekte Ergänzung zur Kuh: Menschen neigen doch dazu sich Sinnsprüche an die Wand zu hängen - gerahmt und hübsch gemacht. Für Letzteres sorgt die Kuh, der Rest ist Glückssache:

fortune | cowsay

Fortune kennt Sinnsprüche bis zum Abwinken, es ist die digitale Version eine Glückskekses. Übrigens: Die Kuh-Keks-Kombi könnt Ihr auch als automatischen Begrüßungsonkel in den Terminal bauen!

Installation:

sudo apt install fortune

Und das könnte Euer Schicksal sein:

fortune-ausgabe.
Dann ist das wohl so

Go North!

Bei "go north" wird es (älteren) Rollenspielfans und Computernerds sofort warm ums Herz. Lange (also so richtig wirklich lange!) vor hübschen, spieltiefen RPG-Perlen wie Pillars of Eternity 2 oder AAA-Blockbustern wie Cyberpunk 2077 waren RPGs auf ein wenig Text beschränkt. Die ersten Computer-RPGs waren im Grunde reine Umsetzungen des Pen&Paper-Prinzips: Ein Regelwerk, eine simple Geschichte, Felder/Orte, die Monster, Rätsel, Schätze beinhalten und der Computer agiert als Dungeon-Master.

Am Anfang heißt es meist - so ungefähr: Du stehts auf einem leeren Feld, südlich eines kleinen Hauses. Und was folgt ist die vielleicht typischste aller RPG-Anweisungen: Gehe nach Norden/Go North. So etwa zu bewundern im Text-Adventure Zork.

Okay, man sollte hier von Spaß sprechen, nicht einfach Spaß. Ohne direkten persönlichen Bezug hat Zork heute eher etwas vom Betrachten einer Laterna Magica: Toll, was es nicht alles gab ... - aber nach 30 Sekunden verlangt der innere Schweinehund nach Entlastung und einfach zu verdauendem Netflix-Rödel. Text-Adventure können leider super frustrierend sein, wenn es ständig - und ich meine STÄNDIG! - heißt: Verstehe ich nicht, geht nicht, kann nicht, will nicht ...

Trotzdem, spielt Zork:

sudo snap install zork
zork-anweisungen.
Zork - läuft in höchster Auflösung ohne Ruckeln!

Statistik, yeah!

Okay, Statistik mit Spaß zu verbinden gelingt vielleicht nicht jedem ;) Aber manche Dinge sind im Terminal so wunderbar einfach, dass man einfach so mal zwischendurch die Statistikmaschine anwerfen kann. Wie wäre es zum Beispiel mit etwas Textanalyse? Ihr wollt zum Beispiel wissen, wie oft der Name "Schmidt" in einem Dokument vorkommt?

grep -c Schmidt dokument.txt

Oder wie oft CDU oder SPD im Demokratie-Artikel auf Wikipedia vorkommen?

curl -s https://de.wikipedia.org/wiki/Demokratie | html2text | grep -Eic "cdu|spd"

Über den Parameter "-c" (count) zählt grep schlicht die Vorkommen der Suchbegriffe. Das ist zum Beispiel super nützlich, wenn In einem Haufen Dokumente der Name Schmidt zu Schmitt geändert werden soll. Wenn es nur zwei Vorkommen gibt - fix per Hand erledigt. Wenn es aber 384 Vorkommen gibt - doch lieber per Stapelverarbeitung.

Auch der oben erwähnte vollautomatische Blog basiert auf Daten, die mit "grep -c" geerntet wurden. Und mit Gnuplot lassen sich die nackten Zahlen eben hübsch aufbereiten:

gnuplot-diagramm.
Diagramme machen Statistiken verdaulich ;)

Die weitere Verarbeitung statistischer Daten ist nicht immer ganz einfach, auch Gnuplot ist im Grunde eine eigene Skriptingsprache. Und auch zusätzliche Tools wie html2text (macht aus HTML-Quellcode Menschentext) wollen erst mal bekannt sein. Aber wenn die Grundlagen sitzen, ist es eben doch verlockend, mal eben ein paar quantitative Daten zu erheben.

Sheldon würde es lieben

Sheldon Cooper hätte sicherlich Spaß an Statistikspielereien, aber wenn er eine Pause bräuchte:

sudo apt install sl
sl

Und schon fährt ein hübscher Tufftuff-Zug über den Bildschirm.

sl-ausgabe im terminal.
Der fährt sogar!

Hübschmach-Lokus

Ein letztes Mal ASCII-Art, versprochen: Unter dem mal so gar nicht aussagekräftigen Namen toilet, verwandelt das Tool übergebenen Text in Blingbling:

toilet -t --gay -f mono12 El Tuto ftw!

Sowas braucht man!

toilet-ausgabe.
Klar, was ins Klo kommt, ist scheisse - also ist was raus kommt schön?

Ja, jaaa, jaaaa - Jaaaaaaa!

Yep. Yup. Yo. Ja. Yes. Sicher. Logo. Oui. Si. Ganz ehrlich, was anderes macht yes einfach nicht - es gibt standardmäßig Ja aus, genauer gesagt y - bis zur Unendlichkeit, und noch viel weiter. Unstandardmäßig gibt es übergebenen Text aus - ebenfalls für immer. Klingt beknackt? Isses aber nicht:

sudo apt install foo bar foobar barfoo dummy bla | yes 

Damit würden alle Rückfragen, ob die Tools wirklich installiert werden sollen, schlichtweg bejaht. Einige Tools haben auch die Option -y, um etwaige Rückfragen für was auch immer zu bejahen.

Man kann yes aber auch zum Beispiel so nutzen:

yes Terminal ist beschäftigt ... & sleep 2 && killall yes

So würde yes zwei Sekunden lang den Text ausgeben und den Terminal weitgehend blockieren - ein STRG+C bricht natürlich wie immer ab, kommt aber nur selten durch, weil die yes-Abarbeitung so fix ist. Zum Bejahen, für Tests und zum Nerven von Kollegen ist yes bisweilen echt super!

Space Invaders, natürlich

Und noch ein Spieleklassiker, nun aber mit Action - Space Invaders. Der Arcade-Klassiker hat es unter vielen Namen ins Herz vieler etwas älterer (okay, uralter ...) Gamer geschafft, bei mir als Galaga auf dem C64. Die Bash-Version ist nicht wirklich der Hit, ist sie doch kein liebevolles Remake, sondern "nur" ein abtetipptes Programmierbeispiel aus einem Lehrbuch.

Aber für 2 Minuten Retro-Flash:

wget https://raw.githubusercontent.com/Datron/space_invaders/master/space_invaders
chmod +x space_invaders
./space_invaders

Galaga war nicht wirklich hübscher, aber deutlich fixer und mit dem richtigen Joystick, damals noch digital, hat das schon Spaß gemacht - und für Siebenjährige in '82 war es durchaus High-End-Entertainment. Wenn auch nicht so geil wie Hand-, Fuß-, Tennis- und sonstige Bälle :)

space-invader werden angegriffen.
Aliens greifen an - mehr Story braucht es nicht

Dieses "Internet"-Ding ...

Das WWW von heute, eigentlich fast das ganze Internet, ist darauf ausgelegt, mit dem Browser erkundet zu werden. Da macht es schon Freude, dass das kein Muss ist! Beispielsweise ist der Download von viele Dateien im Terminal oft wesentlich einfacher als per Browser (sofern kein Download-Plugin die Arbeit erleichtert). Mehr dazu findet Ihr im Download-Teil dieser Serie.

Mit curl habt Ihr aber im Grunde eine Art Browser. Nun, eine sehr fundamentale Version. Aber curl kann URLs abrufen und deren Quelltext zurückliefern - und per Pipe und dem wunderbaren html2text bekommt Ihr eine lesbare Ausgabe, ganz ohne Werbung, Bilder und dergleichen:

curl https://www.tutonaut.de/linux-terminal-basics-12-schleifen-mit-for-while-until/ | html2text -utf8

Warum das toll ist? Nun, mit curl lassen sich ganz fix auch ganze Webseiten kopieren oder Dutzende von Artikeln besorgen. Diese lassen sich dann wiederum zum Beispiel statistisch auswerten, aber das hatten wir ja schon. Wie wäre es damit:

curl ifconfig.me

Das liefert Eure öffentliche IP-Adresse zurück - deutlich besser als die ganzen Wie-ist-meine-IP-Seiten, die Euch eigentlich nur Werbung zeigen wollen.

Oder wie wäre es mit Recherche? Für DuckDuckGo gibt es zum Beispiel einen schönen Client, um direkt im Terminal Suchanfragen zu stellen:

sudo apt install ddgr
ddgr puppies

Für eine schnelle Suche ist das super, zudem lassen sich auch mehrere Ergebnisse gleichzeitig im normalen Browser öffnen. Auch wenn Ihr Suchanfragen oder Ergebnislisten speichern wollt, kann das sehr praktisch sein. Das (weitgehend?) gleiche Tool gibt es als Googler auch für die Google-Suche - wird aber nicht mehr gepflegt und funktioniert nicht mehr.

Vor allem sind es aber APIs, die für Freude sorgen - allerdings fällt das eindeutig nicht mehr unter Basics ... Obwohl, manchmal ist das verdammt simpel. APIs sind Schnittstellen, über die Programme/Services angesprochen werden können. Wenn Ihr im Browser im Google-Suchfeld etwas eingebt, wird auch das an die API der Google-Suche geschickt. Ein simples Beispiel hatten wir erst kürzlich: Die KI-Sprachausgabe von ElevenLabs.

Wenn Ihr APIs ansprechen könnt, könnt Ihr wirklich kreativ werden! Schaut Euch einfach mal den (früher mal) tollen Service IFTTT (If This Then That) an. Dieser verbindet Dinge wie zum Beispiel Twitter und Telegram: Nachrichten eines Telegram-Chats sollen automatisch getwittert werden? Kein Problem, IFTTT zieht sie aus Telegram und postet sie auf Twitter - über die APIs. Und wenn Ihr mit APIs im Terminal zurechtkommt, braucht Ihr die IFTTTs dieser Welt nicht mehr - Ihr könnt dann alles mit allem verbinden.

4 Tools, 1 Ausgabe

Den größten Spaß hat man im Terminal aber eigentlich, wenn Arbeit verkürzt wird - und das geht am einfachsten mit Aliassen. Aliasse sind traditionell Abkürzungen für Befehle mit vielen Optionen oder Optionen, die man eh immer verwendet. Das bekannteste Beispiel:

ls

Unter Ubuntu ist ls standardmäßig eigentlich nicht das Programm ls, sondern folgender Alias:

ls --color=auto

Die Ausgabe von ls ist farbig deutlich nutzerfreundlicher und hat keine Nachteile - Dank Alias muss man aber gar nichts davon wissen. Manchmal ist es auch die schiere Menge an Optionen, die nervt:

git log --stat --graph --abbrev-commit

Damit lässt sich der Git-Log hübsch lesbar aufrufen - aber das ständig eintippen? Nope! Ein Alias löst das Dilemma:

alias gitlog='git log --stat --graph --abbrev-commit'

Fortan genügt ein simples

gitlog

um git mit all den Optionen aufzurufen. Man kann aber auch Aliasse in Form kleinerer Skripte verwenden:

alias ml_version='
        tput setaf 1 && echo Systeminfo: && tput sgr0 &&
        lsb_release -idrc &&
        tput setaf 1 &&  echo Kernel:&& tput sgr0 &&
        uname -r &&
        tput setaf 1 && echo Devices: && tput sgr0 &&
        lsblk -o NAME,SIZE,MOUNTPOINT | grep -v  ^loop &&
        tput setaf 1 && echo Speicherplatz: && tput sgr0 &&
        df -h --output=source,size,used,avail,target --exclude-type=tmpfs |
grep -v ^\/dev\/loop'

Ja, sieht kacke aus. Diesen Alias nutze ich allerdings ständig, weil es einige wichtige Systeminformationen auflistet, die ich mir auf dem Desktop mühsam zusammensuchen müsste. Die Ausgabe sieht so aus:

skriptausgabe mit systeminformationen.
Das würde auf'm Desktop eeeetwas länger dauern ;)

Nun brauche ich diese Infos meist auf neuen/fremden Systemen - was bringt mir da ein lokaler Alias? Tja, erfreulicherweise nutze ich das Ding mittlerweile nicht mehr als Alias, sondern als Skript - aus dem Internet! Hier kommen dann gleich mehrere unserer Spaßfaktoren zusammen:

curl cli.help/version | bash

Das Skriptchen liegt bei unserer hauseigenen Linux-Hilfe cli.help, wird mit curl abgerufen und dann per Pipe an die Bash weitergeleitet und von dieser ausgeführt. Wenn Ihr auf einem Debian-/Ubuntu-Abkömmling unterwegs seid, sollte das Skript sofort funktionieren - probiert es einfach mal per Copy&Paste.

Spaß im Terminal mag nicht jedermanns Angelegenheit sein und einige der hier vorgestellten Spaßfaktoren sind kaum mehr als 20 Sekunden lang amüsant. Aber wenn all diese Dinge in Fleisch und Blut übergegangen sind, Ihr Euch ganz selbstverständlich im Terminal bewegen und all seine Vorteile ausnutzen könnt, wird der Terminal zunehmend zu einem großen Spielplatz für kreative Techies. Allein, dass alle Programme über einen popeligen senkrechten Strich miteinander verbunden werden können ist schon großartig - in der GUI-Welt kann man davon nur träumen!

Und vielleicht sollte man auch nicht unterschätzen, wie schön es sein kann, so ein sperriges Ding wie den Terminal zu beherrschen - außerhalb der reinen Techie-Welt macht Euch das zu IT-Göttern ;) Und wenn Ihr dann noch mal eben ein wenig Office-Magie aus den Fingern schüttelt, ist Euch Bewunderung gewiss - schaut mal hier rein! Das ist doch besser, als sich ständig mit kindlichem 1337-Slang als zwölfjährig zu outen. Nein Spaß, Leetspeak ist super! Im Tech-Universum. In (rechten) Social-Media-Kommentaren, bei denen Leetspeak-Derivate die eigene Unfehlbarkeit ausdrücken und der bösen (sorry, natürlich "pösen" ... ) Zensur ein Schnippchen schlagen sollen ... nicht. Lasst es, es ist peinlich und vermittelt nur den Eindruck mangelnder kognitiver und expressiver Fähigkeiten, w011?! Vielleicht unterlassen die (linken) Pseudointellektuellen dann ja auch diese Grütze mit lateinischen Kalendersprüchen. quatsch erat strunzdumm!!11!!111! Aber das darf man ja nicht sagen. Sorry, Off Topic, aber ich will auch meinen Spaß ;)

Schöne Pfingsten noch!

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

2 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"