Skip to content
Wolfgang Friebel edited this page Feb 16, 2025 · 2 revisions

25 Jahre lesspipe.sh, das Schweizer Taschenmesser für less?

In den 1990er Jahren wuchs die Popularität des Dateibetrachters less. Die Möglichkeit, anzuzeigende Dateien vorher noch durch einen Filter laufen zu lassen, machen sich die vielen existierenden Varianten von lesspipe zu nutze.

Neben der u.a. mit Debian und Ubuntu verbreiteten Variante lesspipe ist das hier vorgestellte lesspipe.sh eine der populärsten Versionen solcher Filter.

Was ist das Besondere an diesem lesspipe.sh?

Während die meisten Varianten sich mit einmaliger Transformation des Dateiinputs begnügen, ist dieses lesspipe.sh seit der Version 1.0 vom 16. Februar 2000 fähig, die Filterung mehrfach anzuwenden. Damit gelingt es zum Beispiel wie in grafischen Dateibrowsern, einzelne Dateien aus Archiven anzuzeigen, ohne die erst zu entpacken. Ist eine solche Datei im man page Format, wird diese dann auch als formatierte man page angezeit und für Source Code Dateien kann die Syntax farbig hervorgehoben werden. Das und die Unterstützung des File Komplettierungsmodes in bash und zsh (siehe weiter unten) sind zumindest derzeit Alleinstellungsmerkmale des hier vorgestellten lesspipe.sh.

sample_output

Benötigt lesspipe weitere Hilfsprogramme?

Das lesspipe.sh funktioniert bereits mit den standardmäßig im System vorhandenen Programmen, sinnvoll ist aber zumindest ein installiertes libreoffice und ein Programm zur Interpretation von html, wie z.B. w3m oder elinks.

Wie wird lesspipe installiert?

Am einfachsten geht das, wenn das lesspipe Paket von github herunter geladen wird, und dann im ausgepackten Archiv mit den Befehlen

./configure

sudo make install

installiert wird. Danach muss noch die Environment Variable LESSOPEN wie in der Dokumentation beschrieben gesetzt werden. Will man auch die Tab Komplettierung in der zsh oder bash benutzen, sind weitere Einstellungen notwendig. Da mittlerweile viele Installationen ein anderes lesspipe mitbringen und auch die Environment Variable LESSOPEN setzen, sollte man überprüfen, ob LESSOPEN richtig gesetzt ist, falls das lesspipe.sh nicht wie gewünscht funktioniert.

Was ist ein typischer Anwendungsfall für das rekursive lesspipe.sh

Wenn man aus einem Archiv (z.B. lesspipe-2.00.tar.gz) die darin enthaltene manpage (hier lesspipe.1) anschauen will, ohne das Archiv zu entpacken, dann gibt man ein:

less lesspipe-2.00.tar.gz:lesspipe-2.00/lesspipe.1

Wenn die Tab Komplettierung korrekt eingerichtet ist muss man nach dem Doppelpunkt nur noch mehrfach die Tab Taste und dann Enter betätigen, damit der Inhalt angezeigt wird.

Kann ich die Anzeige beeinflussen, wenn lesspipe.sh nicht das Gewünschte anzeigt?

Es kommt durchaus vor, dass man die Originaldatei ohne Filter angezeigt haben möchte. Dann hängt man am Argument von less zwei Doppelpunkte an, z.B für eine HTML Datei a.html schreibt man

less a.html::

Da lesspipe.sh farbliche Hervorhebung der Syntax ermöglicht, kann es vorkommen, dass der falsche Dateityp erkannt wird. In dem Fall kann man einen bestimmten Dateityp erzwingen, indem man den Dateityp mit oder ohne Punkt nach einem Doppelpunkt schreibt:

less a.html:.html

Eine Besonderheit gibt es bei HTML (und XML) Files. Normalerweise wird dort nur der reine Text ausgegeben. Hängt man einen Doppelpunkt an, wird der Inhalt des Files mit Syntax Hervorhebungen angegeben. Wenn das Programm xmq installiert ist, erfolgt die Ausgabe dann in einem leichter lesbarem Format, wie im folgenden Bild zu sehen:

less a.html:

xmq_output

Die gewohnte Notation mit Tags kann man in dem Fall mit angehängtem :.html erzwingen, also

less a.html:.html

html_output

Kann man das Programm wählen, mit dem Syntax Hervorhebung gemacht wird?

In lesspipe.sh werden derzeit 6 Programme unterstützt, die eine Einfärbung entsprechend der Syntax vornehmen. Abgesehen von sehr einfachen Fällen sind nur drei davon empfehlenswert, nämlich nvimpager bat(cat) und pygmentize. Das Skript vimcolor arbeitet zu langsam und source-highlight sowie code2color unterstützen nur wenige Filetypen. Die Wahl des Programms kann mit der Environment Variable LESSCOLORIZER erfolgen.

Kann man die Filterung durch lesspipe.sh modifizieren?

Das Ausschalten der Filterung ist ja mit :: möglich, so kann man sogar binäre Files aus Archiven extrahieren, ohne es vorher auszupacken, z.B eine Datei exe_file: less archive.tar.gz:archive_dir/exe_file:: > exe_file Aber auch die gezielte Änderung durch ein Skript .lessfilter ist möglich. Details dazu stehen in der Dokumentation.

Wie sicher ist die Benutzung von lesspipe.sh

Beim Kodieren wurde auf Sicherheit Wert gelegt, es wird an vielen Stellen die Korrektheit des Inputs geprüft und externe Programme werden entfernt, wenn Sicherheitsprobleme bekannt werden. Es kann auch eine Minimalversion von externen Programmen gefordert werden. Da es jedoch immer Sicherheitsprobleme in Programmen geben kann, ist bei Files mit unbekannter Herkunft Vorsicht geboten. Das Sicherheitsrisiko ist jedoch vergleichsweise gering, da die meisten der von lesspipe.sh verwendeten Programme keine Schreibzugriffe vornehmen.

Wie kann man Fehler oder Verbesserungswünsche kommunizieren?

Am einfachsten ist es, ein Ticket in github (https://github.com/wofr06/lesspipe) zu erzeugen. Ansonsten findet man die Mailadresse des Autors auch in der Dokumentation.

16.2.2025 W. Friebel

Clone this wiki locally