LESSPIPE.SH(1) Dienstprogramme für Benutzer LESSPIPE.SH(1)

lesspipe.sh - ein Filter für Less

ÜBERSICHT

lesspipe.sh [DATEI[en]] …

Der Zweck von lesspipe.sh ist die Verbesserung der Ausgabe von less. Die Wahl der anzuwendenden Regeln zur Beeinflussung der Ausgabe basieren auf dem Inhalt der Datei. Die Dateiendung wird lediglich als letzter Anhaltspunkt berücksichtigt. lesspipe.sh wird üblicherweise als Eingabefilter für less aufgerufen.

Mit Hilfe dieses Filters zeigt less den unkomprimierten Inhalt komprimierter Dateien an (gzip, bzip2, compress, zstd, lz4, lzip, xz, lzma oder brotli). Bei Dateien, die Archive und Verzeichnisse enthalten (zum Beispiel die Formate tar, ar, zip, i7-zip, rar, jar, rpm, deb, ms-cabinet und iso), wird ein Inhaltsverzeichnis angezeigt. Viele andere Dateien werden für die Anzeige neu formatiert. Diese umfassen pdf, dvi, markdown, die Formate der Bürosuiten MS Office und Openoffice, NetCDF, matlab, html und Medienformate (Bild, Audio und Video). Dafür sind zusätzlich installierte Hilfsanwendungen erforderlich.

Der Filter kann auch rekursiv bis zu einer Tiefe von 6 Vezeichnisebenen agieren und Dateien in Archiven unmittelbar entpacken und anzeigen. Hierbei zählt ein Kompressionsalgorithmus als separate Ebene.

Falls das Dienstprogramm file(1) Text mit einer Kodierung berichtet, die sich von der im Terminal verwendeten Kodierung unterscheidet, dann wird dieser Text mittels iconv(1) in die Standardkodierung umgewandelt. Dies setzt voraus, dass file die Dateikodierung korrekt ermitteln kann, was aber in einigen Situationen nicht gelingt. Sie können die Umwandlung unterdrücken, indem Sie einen Doppelpunkt an den Dateinamen anhängen.

Wenn Sie die Programme git(1), vim(1) oder mutt(1) verwenden, können Sie lesspipe.sh zum Lesen von Nicht-Textdateien aktivieren. Dies ist im Wiki auf https://github.com/wofr06/lesspipe/wiki beschrieben.

Der Filter wird von less aufgerufen, sofern die Umgebungsvariable LESSOPEN korrekt gesetzt ist. Für die Ksh-artige Shells (bash, zsh) sollte der Befehl

LESSOPEN="|lesspipe.sh %s"; export LESSOPEN
den Filter für less. Verwenden Sie den vollständigen Pfad, falls sich lesspipe.sh nicht im Suchpfad befindet. Wenn Sie lesspipe.sh ohne Argumente aufrufen, wird der Befehl zum Setzen der Variable LESSOPEN angezeigt. Damit können Sie LESSOPEN sogar direkt setzen:
eval `lesspipe.sh` (bash) oder
lesspipe.sh|source /dev/stdin (zsh)
Mit der wie vorstehend beschrieben gesetzten Umgebungsvariable zeigt less dann für zahlreiche Dateiformate Informationen in Textform an.

Der Filter wird normalerweise nicht aufgerufen, wenn die Eingabe aus einer Pipe an less übergeben wird, wie in

cat eine_Datei | less
Wie in der Handbuchseite zu less beschrieben, können Sie die Filterung in einer Pipe dennoch aktivieren, wenn Sie der Variable LESSOPEN die Zeichen |- voranstellen.

Die Zeichen || am Anfang der Umgebungsvariable LESSOPEN für den Umgang mit leeren Dateien und Befehlsfehlern sind in dieser Version von lesspipe.sh nur teilweise implementiert. Üblicherweise werden bei fehlgeschlagenen Befehlen innerhalb von lesspipe.sh Fehlermeldungen angezeigt.

Die nunmehr veraltete Variable LESS_ADVANCED_PREPROCESSOR bestimmte früher, ob html, xml und perl pod als Textformate aufgefasst werden sollten oder nicht. Jetzt werden diese Formate immer interpretiert, außer wenn ein Doppelpunkt an den Dateinamen angehängt ist. Falls die Dateiendung den genauen Dateityp angibt (html, xml, pod), kann die Ausgabe farbig dargestellt werden (siehe nachfolgend).

Beispiel: less index.html:html

Um informative Meldungen in der ersten Zeile der Filterausgabe zu unterdrücken, kann die Umgebungsvariable LESSQUIET auf einen nicht leeren Wert gesetzt werden.

Um den Filter temporär auszuschalten, können Sie einen Doppelpunkt an den Dateinamen anhängen. Falls der Dateiname selbst einen Doppelpunkt enthält, sollten Sie stattdessen ein Gleichheitszeichen verwenden.

Der Filter ist in der Lage, Syntaxhervorhebung für eine breite Auswahl an Dateitypen zu verwenden. Falls installiert, wird bat/batcat für die farbige Darstellung der Ausgabe verwendet. Falls nicht, werden stattdessen pygmentize, source-highlight, code2color und vimcolor versucht. Für bat/batcat wird das Thema auf ansi und der Stil auf plain gesetzt, welches der ungefilterten Ausgabe von less näher kommt. Diese Einstellungen können in ~/.config/bat/config oder den Umgebungsvariablen BAT_STYLE und BAT_THEME geändert werden.

Aus diesen Einfärbungsprogrammen können Sie eines als Standard für die farbige Darstellung festlegen, indem Sie die Umgebungsvariable LESSCOLORIZER auf dessen Namen setzen. Für pygmentize und bat/batcat sind folgende Einstellungen erlaubt:

LESSCOLORIZER='pygmentize -O style=foo'
LESSCOLORIZER='bat --style=foo --theme=bar'
Syntaxhervorhebung wird aktiviert, wenn die Umgebungsvariable LESS existiert und die Option -R enthält oder less mit dieser Option aufgerufen wird. Das stellt sicher, dass Escape-Sequenzen in Farben umgewandelt werden und die Anzeige nicht entstellen. Die Verwendung der Option -r wird nicht empfohlen, da lange Zeilen in der Ausgabe das Bildschirmlayout verfälschen könnten.

Die Syntaxhervorhebung kann durch Anhängen eines Doppelpunktes an den Dateinamen deaktiviert werden, falls die Ausgabe farbig war. Sollte für die Syntaxhervorhebung die falsche Sprache gewählt worden sein, kann eine andere durch Anhängen eines Doppelpunktes und der entsprechenden Endung an den Dateinamen erzwungen werden.

In einer Pipe kann diese Methode nicht verwendet werden. Ein möglicher Ausweg ist das Hinzufügen eines letzten Arguments, das von lesspipe.sh ausgewertet wird. Ein einzelner Doppelpunkt (Deaktivierung der Filterung) oder :Erweiterung (Erzwingung einer bestimmten Sprache) ist beispielsweise möglich mit

Befehl, der C-Code erzeugt | less - :c

Wenn die Bedingungen für Syntax-Hervorhebung erfüllt sind, werden Auflistungen von Verzeichnis- und Tarball-Inhalten ebenfalls farbig dargestellt.

Wenn less in anderen Programmen als Standardbrowser verwendet wird, kann die Wahl der Art der Einfärbung die Ausgabe jener Programme beeinflussen. Für man, git und perldoc nimmt lesspipe.sh keine Filterung vor.

ÜBERWACHEN ANWACHSENDER DATEIEN

Sobald lesspipe.sh ein Programm zur Umwandlung der Eingabe aufruft, geht die Fähigkeit zum Überwachen anwachsender Dateien (mit dem F-Befehl innerhalb von less) verloren. Dies ist aber üblicherweise für Protokolldateien wie /var/log/syslog erwünscht. Um lesspipe.sh temporär abzuschalten, können Sie einen Doppelpunkt als letztes Argument für less hinzufügen, wie in

less /var/log/syslog :
oder less kann mit dem Argument +F aufgerufen werden, welches dem Drücken der Taste F im Seitenanzeigeprogramm entspricht:
less +F /var/log/syslog
Das Anhängen eines Doppelpunkts an den Dateinamen funktioniert nicht, weil dann der Filter angewiesen werden müsste, zumindest diesen Doppelpunkt zu entfernen und cat(1) für die Originaldatei zu verwenden. Andererseits können nicht anwachsende Protokolldateien mittels ccze(1) farbig dargestellt werden. Die Erkennung als Protokolldatei ist schwierig, falls sie nicht die Endung .log hat, aber Sie können das Anhängen von :.log an den Dateinamen erzwingen, wie beispielsweise in
less /var/log/syslog:.log

Diese Version von lesspipe.sh ermöglicht Ihnen die Anzeige individueller Dateien, die in einem Dateiarchiv enthalten sind, welches selbst sogar in einem anderen Archiv enthalten sein kann.

Die Notation für die Betrachtung von Dateien in Archiven, die mehrere Dateien enthalten, ist wie folgt:

less Archivdatei:enthaltene_Datei
oder auch
less Übergeordnetes_Archiv:Archivdatei:enthaltene_Datei
Um die letzte Datei in der Kette in einem Rohformat anzuzeigen, muss an den Dateinamen ein Doppelpunkt (:) angehängt werden. Falls diese bereits einen Doppelpunkt enthält, muss ein Gleichheitszeichen (=) als alternatives Trennzeichen verwendet werden.

Diese Methode zum Entpacken und Anzeigen von Dateien funktioniert wiederum nicht, wenn less in einer Ausgabe-Pipe aufgerufen wird und die Umgebungsvariable LESSOPEN mit den Zeichen |- beginnt. Wie auch für die Syntaxhervorhebung, ist die Lösung die Verwendung eines zweiten Arguments, das mit einem Doppelpunkt beginnt. Dann würde der vorige Befehl folgendermaßen lauten:

cat Übergeordnetes_Archiv | less - :Archiv:enthaltene_Datei

Mit den bereitgestellten Dateien lesscomplete (für zsh(1) und bash(1)), _less (für zsh) und less_completion (für bash) ist eine Tab-Vervollständigung für Dateien in Archiven möglich. Wenn Sie nach dem Namen einer Archivdatei einen Doppelpunkt (:) oder ein Gleichheitszeichen (=) eingeben und dann die Tabulatortaste drücken, wird die Vervollständigung ausgelöst. Dies funktioniert auch in verketteten Archiven. Die Dateien lesscomplete und less_completion müssen sich in einem der in $PATH aufgelisteten Verzeichnisse und die Funktion _less für zsh(1) in einem in $fpath aufgelisteten Verzeichnis befinden. Das Skript less_completion muss innerhalb eines Bash-Initialisierungsskripts liegen, zum Beispiel in ~/.bashrc. Neue Verzeichnisse wie ~/scripts und ~/.fpath können mit folgenden Befehlen hinzugefügt werden:

PATH=~/scripts:$PATH und fpath=(~/.fpath $fpath)

Das Filtern mit lesspipe.sh kann durch ein benutzerdefiniertes Programm ersetzt oder erweitert werden. Ein solches Programm muss entweder .lessfilter heißen (und sich im Home-Verzeichnis des Benutzers befinden) oder lessfilter heißen (und sich in einem in $PATH erwähnten Verzeichnis befinden). Es muss ausführbar sein und muss sich mit einem Exit-Code 0 beenden, falls das Filtern innerhalb des Skriptes erfolgte. Andernfalls bedeutet ein von Null verschiedener Exit-Code, dass das Filtern bei lesspipe.sh verbleibt.

Dieser Mechanismus kann dazu verwendet werden, dass Filtern für neue Formate hinzuzufügen oder z.B. das Filtern für bestimmte Dateitypen zu unterbinden.

Wolfgang Friebel

Melden Sie Fehler an <wp.friebel AT gmail DOT com>.

Copyright © 2005-2023 Wolfgang Friebel
Dies ist freie Software, in den Quellen finden Sie die Bedingungen zur Weitergabe. Es gibt KEINE Garantie, auch nicht für die MARKTREIFE oder die TAUGLICHKEIT FÜR EINEN BESTIMMTEN ZWECK.

less(1)

Eine Beschreibung von lesspipe.sh finden Sie auch in der Datei README, die im Quellcode-Paket enthalten ist.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.

Januar 2023 lesspipe.sh