Hübsches Kätzchen dank Fledermaus – Eye-Candy statt cat
Konkatenation - was für ein schönes Wort. Um so erstaunlicher, dass die cat-Ausgabe so fade ist. Batcat kommt zur Hilfe.
Wie gibt man im Terminal mehrere Texte am Stück aus? Man konkateniert - aka verkettet - sie, mit dem absolut nicht katzenartigen Programm cat. Auch wenn es zu Katzenmissbrauch führt, aber das ist ein anderes Thema. Doch cat ist ebenso das Standardprogramm zum Anzeigen zumindest kurzer Texte im Terminal. Batcat ist ein viel besserer Ersatz: Hübscher und nützlicher!
Was kann Batcat?
Zunächst mal: Batcat kann, was auch cat kann. Allerdings ist die cat-Ausgabe wirklich nur das absolute Minimum, reiner, einfarbiger Text. Das einzige, was cat sonst noch kann, ist das Visualisieren von nicht druckbaren Zeichen. Aber wie der Name ja schon sagt, ist die Kernaufgabe auch das Konkatenieren und nicht das Bereitstellen einer lesbaren Version.
Das wiederum wird in der Regel mit Tools wie more (hier in unserer Terminal-Basics-Serie) oder dem komplexeren less erledigt. Less hat etliche Features: In vielen Abstufungen fortschreiten, nach Mustern suchen, Dateien wechseln, Ausgabe anpassen, zum Editor wechseln, ohne less schließen zu müssen und vieles mehr.
Batcat gibt kurze Texte direkt wie cat aus und für längere Texte nutzt es less. In beiden Formen macht Batcat die Ausgabe allerdings wesentlich hübscher - dank Syntax Highlighting. Und dazu gibt es passend auch Zeilennummerierung. Das macht das Lesen von Skripten und sonstigen Quelltexten wie Markdown- oder HTML-Dokumenten wesentlich einfacher.
Weitere Features
Batcat hat noch ein paar wirklich coole Features. Zum Beispiel hat das CLI-Tool ein Herz für Screenshotter: Der Dateiname wird bei der Ausgabe oben mit angegeben und kann manuell gesetzt werden. Das ist zum einen praktisch, wenn man mal eben einen Screenshot von einer Testdatei machen möchte, die dann nicht "mein-scheiss-foobar.sh" heißen soll ... Naja, eher wohl, wenn man Batcat nicht mit einer Datei, sondern STDIN füttert - zumal dann die angegebene Dateierweiterung für das passende Highlighting sorgt:
echo 'cat foobar && ls /var' | batcat --file-name=mein-skript.sh
Das führt zu dieser Ausgabe:
Ohne den "--file-name"-Parameter und das abschließende ".sh" würde der Text schlicht einfarbig ausgegeben.
Ebenfalls nützlich: Hervorhebung von Zeilenbereichen:
batcat --highlight-line 4:10
Das Ergebnis:
Nun etwas für Freunde von Log-Dateien: Das Kommando tail -f zum Monitoren von Log-Dateien kann an Batcat weiterleiten:
tail -f /var/log/kern.log | batcat --paging=never -l log
Das paging-Argument verhindert den Einsatz von less, das für die fortlaufende Anzeige natürlich nicht benötigt wird. Dann wird noch das Log-Format angegeben, um das korrekte Highlighting zu bekommen. Und das ist doch mal hübscher und vor allem übersichtlicher als ein pures tail, oder?
Noch viel besser, und mein persönliches Highlight, ist aber die Git-Anbindung! Batcat kann als Diff-Viewer genutzt werden, also die Unterschiede zwischen einer bearbeiteten Version einer Datei und der im Index vorhandenen Version anzuzeigen:
batcat --diff foobar.md
In der Ausgabe bekommt Ihr dann nur die geänderten Zeilen plus jeweils zwei davor und dahinter sowie Markierungen über hinzugefügte oder gelöschte Zeilen.
Batcat bietet noch einige weitere Funktionen, kann angepasst werden (zum Beispiel more statt less) und kann wirklich allen empfohlen werden, die ab und an in Logs, Skripte, Markup-Texte oder Config-Dateien schauen müssen. Ach was heißt müssen, mit Batcat muss man nicht müssen, da will man wollen, woll?!
Mehr zum Thema CLI und Terminal.