Mit Lesspipe 2.0 sehen Sie mehr und in Farbe

Aus LinuxUser 07/2022

Mit Lesspipe 2.0 sehen Sie mehr und in Farbe

© golubovy / 123RF.com

Browser-Werkzeugkasten

Lesspipe 2.0 ergänzt den Browser Less um viele neue Funktionen wie das Betrachten von Dateien in Archiven, Syntax-Highlighting oder die Anzeige BCD-kodierter Files.

Auf fast allen Linux-Systemen wird der Browser Less durch Lesspipe erweitert. Im Lauf der Jahre hielten immer neue von der Entwicklergemeinde vorgeschlagene Funktionen Einzug in das Skript. Das führte zu stetig komplexerem und unübersichtlicherem Code. Dafür fiel die Notwendigkeit weg, andere Shells als Bash und Zsh zu unterstützen. Um das Chaos einzudämmen, wurde das Skript Ende 2021 grundlegend überarbeitet und verbessert.

Herausgekommen ist eine Lesspipe-Version, die die meisten Dateiformate anhand des von file ermittelten MIME-Typs erkennt, die gängigsten Archivformate beherrscht und für zahlreiche Dateiformate lesbare Texte anzeigt. Großen Wert legen die Entwickler darauf, wo immer möglich durch farbige Hervorhebungen die Lesbarkeit der Texte zu verbessern. Daneben erweitern sie die in Bash und Zsh vorhandene Vervollständigung von Dateinamen mit der Tabulatortaste beim Aufruf von Less deutlich. Zusätzlich können Sie mit der hier vorgestellten Version 2.0 ab sofort Archive durchforsten und daraus anzuzeigende Dateien auswählen.

Lesspipe installieren

Das Shell-Skript lesspipe.sh erhalten Sie auf Github [1] oder auf der Webseite des Autors [2]. Es empfiehlt sich allerdings, ein komplettes Release im ZIP- oder TAR-Format herunterzuladen. Es enthält die Dokumentation, ein Testprogramm sowie Erweiterungen für den Komplettierungsmechanismus in den Shells.

Nach dem Auspacken des Archivs und dem Wechsel ins dabei neu entstandene Verzeichnis lässt sich Lesspipe wie in Listing 1 gezeigt installieren und aktivieren. Dabei ändern Sie bei Bedarf beim Aufruf von configure den vorgegebenen Installationsort (/usr/local/) über die Option --prefix. Die im Listing gezeigten Variablen und Quellen übernehmen Sie sinnigerweise in die Shell-Initialisierungsdateien.

Listing 1

Lesspipe einrichten

$ ./configure
$ make
$ make install
$ LESSOPEN="|/usr/local/bin/lesspipe.sh %s"; export LESSOPEN
$ ### optional: Komplettierung in Zsh und Bash:
$ fpath=(/usr/local/share/zsh/site-functions $fpath)
$ source /etc/bash_completion.d/less_completion

Um möglichst viele Dateiformate als Text auszugeben, greift Lesspipe auf diverse Hilfsprogramme zurück. Neben den oft standardmäßig vorhandenen Kommandozeilenwerkzeugen erweisen sich LibreOffice, ein textbasierter Webbrowser wie W3m oder Lynx, Pdftotext und Mediainfo als sinnvoll, spielen aber für das Funktionieren von Lesspipe letztlich keine Rolle.

Das mitgelieferte Werkzeug test.pl überprüft, welche Dateiformate Lesspipe identifiziert, welche Programme deren Anzeige erfordert und welche davon fehlen (Abbildung 1). Schlagen Tests fehl, liegt das häufig an veralteter Software oder abweichenden Aufrufparametern.

Abbildung 1: Ein Auszug aus der Ausgabe von <code>test.pl</code>. Man erkennt die Tests zur farbigen Ausgabe sowie das Fehlen des Hilfsprogramms Djvutxt.

Abbildung 1: Ein Auszug aus der Ausgabe von test.pl. Man erkennt die Tests zur farbigen Ausgabe sowie das Fehlen des Hilfsprogramms Djvutxt.

Den Turbo einschalten

Um das volle Potenzial des Skripts zu nutzen, müssen Sie mitunter Zusatzinformationen zur Datei an Lesspipe übergeben. Mehrere Argumente betrachtet Less jedoch als verschiedene Dateinamen. Daher müssen Sie dem Dateinamen die entsprechende Zusatzinformation mithilfe eines Doppelpunkts oder Gleichheitszeichens als Trenner hinzufügen.

Um etwa die Datei README.md im Archiv Doku.zip anzuzeigen, verwenden Sie den Aufruf less Doku.zip:README.md. Auf diesem Weg lassen sich selbst Dateien in verschachtelten Archiven anzeigen, indem Sie die Schachtelung jeweils mit Doppelpunkten signalisieren. Steckt das Archiv Doku.zip aus dem vorigen Beispiel etwa im Paket Paket.rpm, lautet der passende Aufruf less Paket.rpm:Doku.zip:README.md.

Die ersten Versionen von Lesspipe waren noch rein auf das Darstellen von Text fokussiert. Im Lauf der Zeit kam jedoch zunehmend die Anforderung auf, die Ausgabe einzufärben. Mittlerweile reichen die entsprechenden Fähigkeiten des Tools von farblich hervorgehobenen Ordnerinhalten über kolorierten Diff-Output bis hin zum Syntax-Highlighting in Quellcode und bunt abgesetzten Logfiles. In der Regel zeigen die Ausgaben von Less jedoch keine Farben. Sie müssen es erst mit der Option -R anweisen, Escape-Sequenzen als Kommando zum Einfärben des Texts im Terminalfenster zu interpretieren. Alternativ lässt sich dazu die Umgebungsvariable LESS=-R setzen.

Nun benötigen Sie nur noch Programme, um den einfarbigen Text bunt zu machen. Für Ls geschieht das mit der Variablen LS_COLORS, Logfiles bekommen durch ccze Farbe, und für das Kolorieren von Quellcode existieren zahlreiche Helfer. Lesspipe unterstützt jedoch nur fünf davon: bat (Ubuntu: batcat) ist der Standard, hinzu kommen pygmentize, source-highlight, code2color und vimcolor. Die letzten beiden finden sich in jedem Lesspipe-Release.

Um den Standard zu ändern, weisen Sie der Variablen LESSCOLORIZER den Namen des gewünschten Programms zu. Das Verhalten der meisten Helfer lässt sich nicht mittels Optionen ändern, sondern nur über Konfigurationsdateien. Für Bat übernimmt etwa ~/.config/bat/config diese Aufgabe. Eine Ausnahme stellt Pygmentize dar, das sich nur über Optionen beeinflussen lässt. Dort wechseln Sie den Style mit dem Parameter -O style=... und bestimmen die Zahl darstellbarer Farben anhand der Terminaleigenschaften.

Versuch und Irrtum

Beim Einfärben des Texts entscheidet Lesspipe anhand von Heuristiken, welcher Quellcodetyp vorliegt. Dabei schlägt es jedoch gelegentlich daneben, weswegen Sie ihm vorschreiben können, einen bestimmten Typ zu wählen. Dazu hängen Sie an den Namen der anzuzeigenden Datei einen Doppelpunkt und anschließend den Quellcodetyp an. Welche Typen das jeweilige Tool unterstützt, zeigt der Output der Befehle aus Listing 2.

Listing 2

Quellcodetypen

$ bat --list-languages
$ batcat --list-languages
$ pygmentize -L lexers
$ source-highlight --lang-list
$ code2color -h
$ vim -c "echo getcompletion('', 'filetype')" -c quit

Ein Doppelpunkt am Ende des Dateinamens unterdrückt generell das Kolorieren der Ausgabe und verhindert zudem, dass Lesspipe sie weiter umformt. Das können Sie nutzen, um einzelne Dateien aus Archiven zu extrahieren. Im Grunde funktioniert das mithilfe von Archivierungsprogrammen, hat aber den Vorteil, dass für alle Archive ein Mechanismus greift. Ein PNG-Bild extrahieren Sie beispielsweise mit dem Aufruf aus der ersten Zeile von Listing 3.

Listing 3

Datei auspacken

$ less archiv.zip:bild.png: > bildkopie.png

Für Dateien, die Lesspipe als HTML, XML oder Perl-POD erkennt, gilt eine Ausnahme: Das Werkzeug versucht sie nicht einzufärben, sondern als reine Textdateien zu interpretieren. Um den Originalcode anzuzeigen, müssen Sie dem Dateinamen einen Doppelpunkt nachstellen. Wollen Sie zusätzlich den Quelltext farbig abbilden, lassen Sie den Dateityp folgen, beispielsweise less index.html:html.

Autovervollständigung

Tippen Sie less Datei und drücken dann die Tabulatortaste, schlägt Lesspipe Ihnen weitere Dateien aus dem aktuellen Verzeichnis vor – eine in Less bereits implementierte Standardaktion. Installieren Sie mit den Befehlen aus den letzten beiden Zeilen von Listing 1 die entsprechenden Erweiterungen, können Sie zum Anzeigen von Dateien in Archiven auf die Komplettierungsfunktion zurückgreifen.

Dazu setzen Sie hinter dem Dateinamen des Archivs einen Doppelpunkt und drücken anschließend so oft die Tabulatortaste, bis die gewünschte Datei erscheint. Geben Sie die ersten Zeichen des gesuchten Dateinamens an, grenzt das die Auswahl ein, und Sie kommen schneller ans Ziel. Ein Druck auf die Eingabetaste beendet die Suche, und Lesspipe zeigt die Datei an.

Abbildung 2 illustriert dieses Vorgehen. Oben im Bild sehen Sie die Auflistung des Inhalts einer Datei, danach mittels [Tab]+ die Vervollständigung. Nach dem ersten Doppelpunkt und einem Druck auf die Tabulatortaste gibt Lesspipe das im Archiv enthaltene Verzeichnis aus, nach dem zweiten [Tab] dessen Inhalt. Der Screenshot entstand in der Z-Shell, die Ausgabe in der Bash unterscheidet sich etwas davon.

Abbildung 2: Oben ein Teil des Inhalts der Datei <code>lesspipe-2.04.tar.gz</code>, unten ein Beispiel f&uuml;r die Vervollst&auml;ndigung mit Doppelpunkt und [Tab].

Abbildung 2: Oben ein Teil des Inhalts der Datei lesspipe-2.04.tar.gz, unten ein Beispiel für die Vervollständigung mit Doppelpunkt und [Tab].

Eigene Erweiterungen

Nicht immer erzeugt Lesspipe den gewünschten Output – sei es, weil Sie beispielsweise immer den HTML-Quelltext anzeigen wollen oder aber ein neues Dateiformat unterstützen möchten. Für solche Fälle stellen Sie ein ausführbares Programm ~/.lessfilter oder lessfilter (muss im $PATH liegen) bereit, das Lesspipe in seinem Verhalten modifiziert oder ergänzt. Terminiert dieses Programm mit dem Exit-Code 0>, hört Lesspipe auf zu filtern, sonst arbeitet es wie gewohnt.

Der Lessfilter aus Listing 4 erzeugt beispielsweise für Dateien, deren Name mit .html endet, grundsätzlich eine Ausgabe als HTML-Quellcode. Bitte vergessen Sie nicht, das Skript ausführbar zu machen – nur dann liefert less index.html das gewünschte Ergebnis. Ein less index.html:html färbt den Quellcode wieder bunt ein, da nun der “Dateiname” (also der Lesspipe-Aufrufparameter) nicht mehr mit .html endet.

Listing 4

HTML-Filter

#!/usr/bin/env bash
if [[ "$1" = *.html ]]; then
  exit 0;
fi
exit 1;

Ausblick

Die Community um Lesspipe treibt das Werkzeug weiter aktiv voran. Bei neuen Dateiformaten entscheidet das Entwicklerteam anhand von deren Verbreitung und des voraussichtlichen Implementierungsaufwands, ob es sich lohnt, sie in Lesspipe aufzunehmen. Manche Linux-Distributionen bringen die hier vorgestellte Version von Lesspipe bereits mit. Die gezeigten Beispiele und Tests funktionieren nicht nur unter Linux, sondern auch unter MacOS. Fehlerberichte und Änderungsvorschläge nehmen die Entwickler des Tools jederzeit gern über die Projektseite auf Github entgegen. (csi)

Der Autor

Dr. Wolfgang Friebel war viele Jahre beim Deutschen Elektronen-Synchrotron DESY als Physiker im Rechenzentrum tätig. Lesspipe ist eines seiner Hobby-Projekte, das er seit nunmehr 25 Jahren betreut und weiterentwickelt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 07/2022 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben