logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
TFT Monitor bei Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich.
Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps.
Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung.
Günstige Shareware Programme als direkte Downloads im Software Portal.
Bis zu 70% sparen durch Preisvergleich.
      Anzeige

Erschienen in LinuxUser 04/2002   »   Ausgabe bestellen

lesspipe

Mehrfunktionen eingespeist

von Christian Perle
 [ Logo ]


Das Programm less als komfortablen Ersatz für more werden die Meisten schon kennen. Mit einem Skript ausgestattet kann es mehr als bloße Textdateien anzeigen.

out of the box

Es gibt tausende Tools und Utilities für Linux. "out of the box" pickt sich die Rosinen raus und stellt pro Monat ein Progrämmchen vor, das wir für schlichtweg unentbehrlich oder aber zu Unrecht wenig beachtet halten.

Je nachdem, welche Linux-Distribution Sie benutzen, wird es Ihnen schon aufgefallen sein: In manchen Konfigurationen kann der Pager less mehr darstellen als reine Textdateien. Manpages werden automatisch formatiert oder Archivinhalte aufgelistet. Doch welcher Mechanismus steckt dahinter? Gibt es "Normal-less" und "Super-less"? Nein, das hier verwendete Feature gehört zum normalen Funktionsumfang von less und ist obendrein erweiterbar.


Pager: Programm zum seitenweisen ("page" ist das englische Wort für "Seite") Anzeigen einer Datei. Verbreitete Pager sind more und less [1].
Manpage: Linux besitzt wie alle Unix-Systeme eine Art Online-Referenzhandbuch für die installierten Programme. Diese Hilfe wird mit "man programmname" aufgerufen, z. B. "man less".

Das Shell-Skript lesspipe von Wolfgang Friebel macht Gebrauch davon, dass less beim Starten die Umgebungsvariable LESSOPEN überprüft. Ist diese nicht leer, wird ihr Inhalt als Programmname interpretiert und less überlässt diesem Tool das Öffnen der anzuzeigenden Datei. Dessen Ausgabe zeigt less dann an. Ein LESSOPEN-Programm wie lesspipe stellt also eine Vorverarbeitung der Eingabe, einen Input Preprocessor, dar.


Shell-Skript: Eine Datei mit Kommandos, die von der Shell abgearbeitet werden. Häufig wiederkehrende Arbeitsschritte lassen sich durch Shell-Skripte gut automatisieren.
Umgebungsvariable: Eine in einer Shell gesetzte Variable, die von allen aus dieser Shell gestarteten Programmen gelesen werden kann.

Einpfeifen

Die lesspipe-Installation ist nicht schwierig. Zunächst besorgen Sie sich das Archiv lesspipe.tar.gz von http://www.desy.de/zeuthen/~friebel/unix/lesspipe.html oder von der Heft-CD. Nach dem Auspacken sucht das (einen Perl-Interpreter voraussetzende) Konfigurationsskript eine Reihe von Hilfsprogrammen zusammen und passt lesspipe daran an. Wird ein installiertes Tool nicht gefunden, helfen Sie dem Skript auf die Sprünge, indem Sie auf seine Frage Include code anyway? den vollen Pfadnamen angeben. Folgende Installationsschritte sind nötig:

 tar xzf lesspipe.tar.gz
 cd lesspipe-1.32
 perl configure
 su  (root-Passwort eingeben)
 make install ; exit
 
Nach dieser Prozedur müssen Sie less nur noch mitteilen, dass es das soeben im Verzeichnis /usr/local/bin installierte Skript verwenden soll. Dazu tragen Sie in der Datei .bashrc in Ihrem Home-Verzeichnis folgende Zeile ein:
 export LESSOPEN="|/usr/local/bin/lesspipe.sh %s"
 
Falls Sie statt der bash die (t)csh als Login-Shell verwenden, fügen Sie stattdessen die Zeile
 setenv LESSOPEN "|/usr/local/bin/lesspipe.sh %s"
 
in die Datei .cshrc ein. Beim nächsten Login stehen dann die erweiterten less-Funktionen bereit.


Voller Pfadname: Der komplette Verzeichnispfad zu einer Datei. Damit wird die Position einer Datei im gesamten Dateisystem eindeutig bezeichnet. Das Kommando top hat etwa den vollen Pfadnamen /usr/bin/top.
Home-Verzeichnis: In diesem Verzeichnis findet sich ein Benutzer nach dem Anmelden (Login) wieder. Hier sind auch seine persönlichen Einstellungen gespeichert.

Zeig mal...

Für einen einfachen Test können Sie die eventuell auf Ihrem System installierte (und mit locate l2kurz.dvi zu findende) LaTeX-Kurzanleitung oder eine andere dvi-Datei nutzen:

 less l2kurz.dvi
 
Sofern bei der lesspipe-Installation das Hilfsprogramm dvi2tty nicht fehlte, sehen Sie eine Ausgabe ähnlich der in Abbildung 1. Das lesspipe-Skript erkennt den Dateityp übrigens nicht an der Endung, sondern mithilfe des Kommandos file [2], das ein Stück vom Inhalt der Datei liest und mit den Einträgen seiner Typendatenbank vergleicht.

 [ TeX ]

Abb. 1: TeX-Dokumente in less

In Tabelle 1 finden Sie die Dateitypen, die lesspipe unterstützt, vorausgesetzt, die passenden Hilfsprogramme sind installiert. Viele dieser Tools, etwa die Komprimierer gzip und bzip2, gehören schon von Haus aus zum Installationsumfang der meisten Distributionen, andere (etwa antiword [3]) müssen oft nachinstalliert werden. Nicht-Debian-User werden zudem auf die Möglichkeit, Debian-Archive anzusehen, verzichten müssen, denn die dazu von lesspipe verwendeten Tools gibt es für RPM-basierte Distributionen nicht.

Tabelle 1: Unterstützte Dateitypen
Typ Hilfsprogramm
.gz, .Z gzip
.bz2 bzip2
.zip unzip
.tar tar
Manpagegroff
.a ar
Dynamische Bibliothek nm
Ausführbares Programm strings
.rpm, .spm rpm, rpm2cpio, cpio
.deb dpkg, dpkg-deb
.doc antiword
.html lynx
.pdf pdftotext
.rtf unrtf
.dvi dvi2tty
.ps ps2ascii, gs

Geschachtelt

Gegenüber einfacheren Eingabefiltern für less bietet lesspipe eine besonders nützliche Eigenschaft: Es lässt sich geschachtelt einsetzen. Haben Sie beispielsweise ein gzip-komprimiertes tar-Archiv vorliegen, können Sie nicht nur die Liste der darin enthaltenen Dateien sehen, sondern auch die Inhalte dieser Dateien, wiederum interpretiert durch den Eingabefilter. In Abbildung 2 zeigt less die Datei linf/package.list aus dem Archiv linf-box.tgz an. Der Aufruf dazu sah folgendermaßen aus:

 less linf-box.tgz:linf/package.list
 
Der Doppelpunkt dient hierbei als Trennzeichen zwischen dem Namen der Archivdatei und dem des darin enthaltenen Files.

 [ Schachtelung ]

Abb. 2: Dateien aus einem Archiv lesen

Die Schachtelung lässt sich noch weiter treiben. Source-RPM-Archive enthalten neben den Paketinformationen auch das originale .tar.gz-Archiv mit dem Quelltext des jeweiligen Programms. Wenn Sie die Datei gnomo-0.1/README.html aus dem in gnomo-0.1.src.rpm enthaltenen Archiv gnomo-0.1.tar.gz ansehen wollen, geben Sie ein:

 less gnomo-0.1.src.rpm:gnomo-0.1.tar.gz:gnomo-0.1/README.html
 
Aufgrund des Dateityps HTML wird die Datei mit dem Text-Web-Browser lynx gefiltert. Wollen Sie diesen Filterschritt verhindern, setzen Sie beim less-Aufruf einfach einen weiteren Doppelpunkt hinter den Dateinamen.


RPM: Mit dem "Red Hat Package Manager" (den u. a. auch SuSE einsetzt) können Softwarepakete sauber installiert und deinstalliert werden. Das zugehörige Paketformat heißt ebenfalls RPM.

ASCII Art

Mit ein wenig Kenntnissen in Shell-Programmierung lässt sich lesspipe auch erweitern -- beispielsweise um die Darstellung von Grafik mithilfe der Grafikfilter von netpbm [4]. Die Erweiterung ist als Patch auf der Heft-CD zu finden.


netpbm: Eine Sammlung von Grafikfiltern, die verschiedene Bildformate bearbeiten oder in andere konvertieren. Anders als Gimp kommt netpbm ohne grafische Bedienung aus und ist daher ideal für Skripte geeignet.
Patch: Eine Datei, die Änderungen zu einer oder mehreren Textdateien enthält. Sie wird mit dem Kommando diff erzeugt und mit dem Kommando patch eingespielt.

Um diesen Flicken auf das Skript anzuwenden, installieren Sie gegebenenfalls netpbm, wechseln nochmals ins Verzeichnis lesspipe-1.32 und geben dort ein:

 patch < pfad_zur_cd/LinuxUser/ootb/lesspipe-asciiart.diff
 perl configure
 su  (root-Passwort eingeben)
 make install ; exit
 

Der Patch fügt vier Zeilen in die Datei lesspipe.sh.in ein, die als Vorlage für das Konfigurationsskript dient. Da less nur Text anzeigen kann, wandeln netpbm-Filter Bilddateien in ASCII-Grafik um. In den Abbildungen 3 und 4 sehen Sie ein Beispiel für die "Grafikfähigkeit" des Pagers mit dieser lesspipe-Erweiterung.

 [ PostIt ]

Abb. 3: Original...

 [ ASCII ]

Abb. 4: ...und Fälschung

Damit verlängert sich Tabelle 1 um alle von netpbm unterstützten Grafikformate. Natürlich sind mit dieser Methode nur Icons und andere einfache Grafiken erkennbar. Weitere Filtermechanismen warten darauf, eingebaut zu werden -- vielleicht eine Aufgabe für launische Aprilwettertage? (pju)

Infos

[1] Heike Jurzik: "Weniger ist manchmal mehr", LinuxUser 02/2002, S. 84 f.
[2] Marianne Wachholz: "Test-Fälle", LinuxUser 03/2002, S. 80
[3] Christian Perle: "Dagegen!", LinuxUser 10/2001, S. 84 f.
[4] http://sourceforge.net/projects/netpbm/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.




Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG | Last modified: 2008-04-22 13:54

[Linux-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Ubuntu User] [Linux Technical Review] [Linux Magazine] [Linux Pro Magazine] [Ubuntu User]
[EasyLinux Poland] [Linux Magazine Poland] [Linux Magazine Brasil] [EasyLinux Brasil] [Linux Magazine Spain]