lexgrog - wertet die Kopfzeilen-Information von Handbuchseiten aus
lexgrog [
-m|
-c] [
-dfw?V] [
-E
Kodierung]
Datei ...
lexgrog ist eine
Lex-Implementierung des traditionellen
Dienstprogramms »groff guess« für die Auswertung von
Handbuch-Quelldateien oder vorformatierten »Cat«-Seiten. Es
liest die Liste der Dateien in seiner Befehlszeile. Seine Ausgabe sind
entweder die Namen und Beschreibungen in der Form, die
apropos und
whatis verwenden oder die Liste der für die Seite erforderlichen
Vorverarbeitungs-Filter für die Erzeugung von
Nroff/
Troff
oder aber beides.
Wenn seine Eingabe schlecht formatiert ist, wird
lexgrog »parse
failed« ausgeben. Das können externe Programme nutzen, die
Handbuchseiten auf Fehlerfreiheit prüfen. Wenn einer der Eingabedateien
von
lexgrog »-« ist, wird das Programm von der
Standardeingabe lesen. Ist eine Eingabedatei komprimiert, wird sie automatisch
dekomprimiert.
-
-d, --debug
- Ausgabe von Debug-Informationen
-
-m, --man
- Interpretiert die Eingabe als Handbuchseiten-Quelltext.
Sind weder --man noch --cat gewählt, greift diese
Voreinstellung.
-
-c, --cat
- Interpretiert die Eingabe als vorformatierte Handbuchseiten
(»Cat-Seiten«). Die Optionen --man und --cat
schließen sich gegenseitig aus.
-
-w, --whatis
- Zeigt den Namen und die Beschreibung aus dem Kopf der
Handbuchseite so an, wie sie von apropos und whatis
verwendet werden. Das ist die Voreinstellung, wenn weder --whatis
noch --filters gewählt wurde.
-
-f, --filters
- Zeigt die Liste der erforderlichen Filter für die
Aufbereitung der Handbuchseite vor der Formatierung mit Nroff oder
Troff.
-
-E Kodierung, --encoding
Kodierung
- Statt des vermuteten Zeichensatzes der Seite die
Kodierung verwenden.
-
-?, --help
- Hilfetext anzeigen und beenden
- --usage
- zeigt eine kurze Anwendungszusammenfassung an und beendet
das Programm.
-
-V, --version
- Versionsinformation anzeigen und beenden
- 0
- erfolgreiche Programmausführung
- 1
- Fehler beim Aufruf
- 2
-
Lexgrog konnte eine oder mehrere seiner
Eingabedateien nicht auswerten.
$ lexgrog man.1
man.1: "man - an interface to the system reference manuals"
$ lexgrog -fw man.1
man.1 (t): "man - an interface to the system reference manuals"
$ lexgrog -c whatis.cat1
whatis.cat1: "whatis - display manual page descriptions"
$ lexgrog broken.1
broken.1: parse failed
Die Programme
mandb und
lexgrog verwenden den gleichen Code.
mandb durchsucht den Abschnitt
BEZEICHNUNG am Anfang jeder
Handbuchseite nach den Namen und den jeweils beschriebenen Funktionen. Obwohl
der Parser (das Auswerteprogramm) ziemlich tolerant ist, weil er sich mit
etlichen verschiedenen, früher genutzten Formaten befassen muss, kann
er ab und zu die gewünschte Information nicht entnehmen.
Wenn Sie die den traditionellen Makrosatz »
man« verwenden,
wird ein gültiger
BEZEICHNUNGs-Abschnitt ungefähr so
aussehen:
.SH BEZEICHNUNG foo \- Programm, das etwas erledigt
Einige Handbuchanzeigeprogramme erfordern das ‘\-q genau in dieser
Reihenfolge.
mandb ist toleranter, aber für die
Kompatibilität mit anderen Systemen ist es dennoch eine gute Idee, den
Backslash (umgekehrten Schrägstrich) beizubehalten.
Auf der linken Seite können verschiedene, durchs Kommas getrennte Namen
stehen. Namen mit Leerzeichen werden ignoriert, um bestimmte
»krankhafte« Verhaltensweisen bei schlecht formatierten
BEZEICHNUNGs-Abschnitten zu vermeiden. Der Text auf der rechten Seite
unterliegt keinen Formvorschriften und kann sich über mehrere Zeilen
erstrecken. Wenn in der Handbuchseite mehrere Merkmale mit unterschiedlichen
Beschreibungen dokumentiert werden, wird das folgende Format verwendet:
.SH BEZEICHNUNG foo, bar \- Programme, die etwas erledigen .br baz \- Programme, die in der Hängematte liegen
(Anstelle des Zeilenvorschub-Makros .br kann auch ein Makro verwendet werden,
das einen neuen Absatz beginnt, z.B. .PP.)
Wird der von BSD abgeleitete
mdoc-Makrosatz verwendet, hat ein
gültiger
BEZEICHNUNGs-Abschnitt ungefähr das folgende
Aussehen:
.Sh BEZEICHNUNG .Nm foo .Nd Programm, das etwas erledigt
Es gibt mehrere häufige Gründe dafür, dass die von Whatis
durchgeführte Auswertung fehlschlägt. Manchmal ersetzen Autoren
von Handbuchseiten ‘.SH BEZEICHNUNG’ durch ‘.SH
MEINPROGRAMM’. Dann kann
mandb den Abschnitt nicht finden, aus
dem es die benötigten Informationen entnehmen soll. Manchmal verfassen
Autoren einen Abschnitt BEZEICHNUNG, aber platzieren dort anstelle von
‘Name \- Beschreibung’. frei formatierten Text. Es sollten aber
beliebige, dem oben Beschriebenen ähnliche Schreibweisen akzeptiert
werden.
apropos(1),
man(1),
whatis(1),
mandb(8)
Lexgrog versucht, Dateien mit ».so«-Anfragen auszuwerten,
hat aber nur dann Aussicht auf Erfolg, wenn die Seiten
ordnungsgemäß in einer Handbuchseiten-Hierarchie installiert
sind.
Der von
Lexgrog verwendete Code für die Auswertung von
Handbuchseiten wurde geschrieben von:
Wilf. ([email protected]).
Fabrizio Polacco ([email protected]).
Colin Watson ([email protected]).
Colin Watson hat sowohl das aktuelle Befehlszeilen-Frontend als auch die
Handbuchseite geschrieben.
https://gitlab.com/man-db/man-db/-/issues
https://savannah.nongnu.org/bugs/?group=man-db