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
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
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:
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
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:
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.
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!
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 :)
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:
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!
Konular mükemmel olduğu gibi site teması da içeriğe müthiş uyum sağlamış. Tebrikler
Teşekkürler