Wo sind die im Manpage-Fenster verfügbaren Befehle dokumentiert und sind diese Befehle systemabhängig?

9

Nachdem ich jahrelang Linux verwendet hatte, stellte ich plötzlich fest, dass ich nicht weiß, wie ich den manBefehl richtig verwenden soll. Es ist bekannt, dass man tippen kann q, um eine Manpage zu verlassen, /zu suchen und andere. Ich weiß jedoch nicht, wo diese dokumentiert sind. Ich habe versucht man man man -a man info manund gegoogelt, ohne Glück.

Bitte weisen Sie mich auf die richtige Position, um nach diesen Informationen zu suchen, auch wenn sie richtig sind man manund ich sie zufällig übersehen habe. Es ist vollkommen in Ordnung. Lassen Sie es mich einfach wissen.

Unterscheiden sich diese Befehle für verschiedene Betriebssysteme oder für verschiedene Linux-Distributionen?

Weijun Zhou
quelle
Werden Manpages nicht gerade angezeigt less? (Es ist zumindest auf meiner Distribution und hzeigt eine Zusammenfassung der lessBefehle)
Rastapopoulos
@Rastapopoulos Werdenless Manpages nicht gerade angezeigt ? Nein, weil lesses kein Standarddienstprogramm ist.
Andrew Henle
Ich nehme an, Sie können verwenden readlink -f /usr/bin/pageroder readlink -f $(which pager)herausfinden, welchen Pager Sie (standardmäßig /bin/less) als manden verwendeten Pager haben. Es kann (sollte) direkt funktionierenman pager
Hastur
2
Wenn Sie Ihre Manpages mit moreoder lesen less, können Sie hHilfe eingeben. (oder Sie können nur verwenden emacs...)
Alex Vong
1
Wenn Sie ?oder han der Pager-Eingabeaufforderung eingeben, sollte eine Liste mit Befehlen angezeigt werden.
Barmar

Antworten:

11

Es ist in der Tat richtig auf der Handbuchseite für man, unter der Überschrift "Controlling formatierte Ausgabe" und später im Abschnitt "UMWELT" für ein gutes Maß wiederholt:

Standardmäßig verwendet man pager -s.
Das Handbuch Seite erklärt , wie es eine Hierarchie von Umgebungsvariablen und Befehlszeilenoptionen ( PAGER, MANPAGERund --pager) für das Überschreiben des Standard.

So liest es sich auf Systemen wie Debian Linux. Auf Systemen wie Oracle Linux hingegen wurde das man-dbPaket mit einer anderen Standardeinstellung erstellt, die sich jedoch immer noch genau dort auf der Handbuchseite an denselben Stellen widerspiegelt:

Standardmäßig verwendet man less -s.

Das man-dbPaket versucht, automatisch zu erkennen, bei der Kompilierung, die Standard - Pager build-in auf den Befehl, und Dokument in der Handbuchseite, aus less, moreund pager.

Auf Systemen wie Debian Linux ist der pagerBefehl Teil des "alternativen" Systems und kann einem von mehreren tatsächlichen Befehlen zugeordnet werden:

jdebp% update-alternatives --list pager
/ bin / less
/ bin / more
/ usr / bin / pg
/ usr / bin / w3m
jdebp%

Man konsultiert also die jeweiligen Handbuchseiten, um zu erfahren, wie sie über die Tastatur gesteuert werden können, je nachdem, welche Alternative gewählt wurde. Nützlicherweise hält das Debian-Alternativsystem die Handbuchseite mit dem gewählten Befehl synchron, sodass das Lesen dieser Handbuchseite recht einfach ist:

Mann Pager

JdeBP
quelle
5

Mann verwendet einen Pager, um den Inhalt anzuzeigen.

Die genauen Details hängen davon ab, welche Version von manIhnen verwendet wird.

Für die auf vielen Systemen verwendete Version:

  • Wenn die Option angegeben -p pagerist, wird dieser Pager verwendet.
  • Andernfalls wird die Umgebungsvariable verwendet, wenn MANPAGERsie festgelegt ist.
  • Andernfalls PAGERwird es verwendet, wenn es eingestellt ist.
  • Andernfalls wird standardmäßig verwendet /usr/bin/less

Wenn die Handbuchseite im HTML-Format vorliegt, BROWSERwird anstelle von MANPAGER/ verwendetPAGER

Debian verwendet man-dbunterschiedliche Standardeinstellungen.

Lesen Sie man manfür die Details

Rattenfänger
quelle
Vielen Dank für Ihre Antwort. Während die Antwort erklärt, wie es manfunktioniert, möchte ich Sie fragen, ob Sie den Gefallen tun können, um mich auf die richtige Stelle zu verweisen, an der dieses Verhalten dokumentiert ist. Danke.
Weijun Zhou
In meiner man manAusgabe (wieder manVersion: 2.6.3) heißt es, dass "standardmäßig weniger -s verwendet wird". Ich gehe also davon aus, dass dies version- und systemabhängig ist.
Weijun Zhou
1
Dies ist nur ein Beispiel für die Standard-Unix-Philosophie: kleine und einfache Befehle, die mit Textströmen arbeiten und genau eines tun und es gut machen. Das Formatieren eines Handbuchs und das Paginieren sind zwei Dinge, weshalb sie von zwei verschiedenen Werkzeugen ausgeführt werden. Auf diese Weise kann das Paginierungswerkzeug für andere Aufgaben wiederverwendet werden, nicht nur zum Anzeigen von Handbuchseiten.
Jörg W Mittag
2

Dank @Rastapopoulos, finde ich eine Linie im Zusammenhang mit lessin man manauf einer alte Linux - Box ( manVersion: 1.6f) in dem ENVIRONMENT Abschnitt , dass die Staaten,

BROWSER Der Name eines Browsers, der zum Anzeigen von HTML-Handbuchseiten verwendet werden soll. Wenn es nicht gesetzt ist, /usr/bin/lesswird verwendet.

Bei einer neueren Box ( manVersion: 2.6.3) wurde diese Zeile jedoch durch ersetzt

BROWSER Wenn $ BROWSER gesetzt ist, ist sein Wert eine durch Doppelpunkte getrennte Liste von Befehlen, mit denen jeweils versucht wird, einen Webbrowser für man --html zu starten. In jedem Befehl wird% s durch eine Datei ersetzt. Der Name, der die HTML-Ausgabe von groff enthält, %% wird durch ein einzelnes Prozentzeichen (%) und% c durch einen Doppelpunkt (:) ersetzt.

Aufgrund dieser Informationen glaube ich, dass sie lessstandardmäßig formatiert sind (zumindest für den ersten Fall). Selbst wenn dies der Fall ist, wird es auf eine Weise dokumentiert, die mir nicht klar erscheint (oder ich habe den manBefehl falsch gelernt ).

Weijun Zhou
quelle
2

Es gibt keine wirkliche Möglichkeit, Ihre Frage im Allgemeinen für verschiedene Betriebssysteme vollständig zu beantworten, da die manImplementierung nicht wirklich vollständig spezifiziert ist.

Die nicht Linux-spezifische POSIX-Standardantwort finden Sie in der POSIX- manDokumentation :

NAME

man - display system documentation

ZUSAMMENFASSUNG

man [-k] name...

...

UMGEBUNGSVARIABLEN

Die folgenden Umgebungsvariablen sollen die Ausführung des Menschen beeinflussen:

LANG

Geben Sie einen Standardwert für die Internationalisierungsvariablen an, die nicht festgelegt oder null sind. (Siehe XBD-Internationalisierungsvariablen für die Priorität von Internationalisierungsvariablen, die zum Bestimmen der Werte von Gebietsschemakategorien verwendet werden.)

LC_ALL

Wenn ein nicht leerer Zeichenfolgenwert festgelegt ist, überschreiben Sie die Werte aller anderen Internationalisierungsvariablen.

LC_CTYPE

Bestimmen Sie das Gebietsschema für die Interpretation von Textsequenzen von Bytes als Zeichen (z. B. Einzelbyte im Gegensatz zu Mehrbytezeichen in Argumenten und in der Zusammenfassungsdatenbank). Der Wert von LC_CTYPE muss sich nicht auf das Format der Informationen auswirken, die über die Namensoperanden geschrieben wurden.

LC_MESSAGES

Bestimmen Sie das Gebietsschema, das verwendet werden soll, um das Format und den Inhalt von Diagnosemeldungen, die in Standardfehler geschrieben wurden, und informativen Meldungen, die in die Standardausgabe geschrieben wurden, zu beeinflussen.

NLSPATH

Bestimmen Sie den Speicherort von Nachrichtenkatalogen für die Verarbeitung von LC_MESSAGES.

PAGER

Bestimmen Sie einen Ausgabefilterbefehl zum Schreiben der Ausgabe in ein Terminal. Jede Zeichenfolge, die als Befehlszeichenfolgenoperand für den Befehl zulässig ist, ist gültig. Wenn die Standardausgabe ein Endgerät ist, muss die Referenzseitenausgabe durch den Befehl geleitet werden. Wenn die PAGER-Variable null ist oder nicht gesetzt ist, muss der Befehl eines oder ein anderes in der Systemdokumentation dokumentiertes Paginator-Dienstprogramm sein.sh-cmore

Beachten Sie den Abschnitt RATIONALE, in dem beschrieben wird, warum dies mannicht so vollständig angegeben ist:

RATIONALE

Es wird anerkannt, dass das Dienstprogramm man nur von minimalem Nutzen ist, wie angegeben. Die Meinung der Standardentwickler war stark gespalten darüber, wie viel oder wie wenig Informationen der Mensch bereitstellen sollte. Sie waren jedoch der Ansicht, dass die Bereitstellung einer tragbaren Methode für den Zugriff auf Dokumentation die Portabilität der Benutzer verbessern würde. Die Argumente gegen eine umfassendere Spezifikation waren:

  • Auf einem System ohne überschüssigen Speicherplatz sollten keine großen Dokumentationsmengen erforderlich sein.

  • Das derzeitige manuelle System präsentiert Informationen nicht in einer Weise, die die Benutzerportabilität erheblich erleichtert.

  • Ein "besseres Hilfesystem" ist derzeit ein Bereich, in dem Anbieter das Gefühl haben, dass sie ihren POSIX-Implementierungen einen Mehrwert verleihen können.

Die Option -f wurde in Betracht gezogen, war jedoch aufgrund von Implementierungsunterschieden nicht in diesem Band von POSIX.1-2008 enthalten.

Die Beschreibung wurde geändert, um genauer zu bestimmen, was für ein Dienstprogramm angezeigt werden muss. Die Standardentwickler hielten es für unzureichend, nur die Zusammenfassung anzuzeigen, ohne eine kurze Beschreibung der einzelnen Optionen und Operanden zu geben.

Der "Zweck" -Eintrag, der in die Datenbank aufgenommen werden soll, kann dem Abschnittstitel (abzüglich des numerischen Präfix) aus diesem Band von POSIX.1-2008 für jedes Dienstprogramm ähnlich sein. Diese Titel ähneln denen, die in historischen Systemen für diesen Zweck verwendet werden.

In mailx finden Sie Gründe für den Standardpaginator.

Die Einschränkung in der LC_CTYPE-Beschreibung wurde hinzugefügt, da es nicht erforderlich ist, dass eine Implementierung Referenzseiten für alle unterstützten Gebietsschemas auf jedem System bereitstellt. Durch Ändern von LC_CTYPE wird die Referenzseite nicht unbedingt in eine andere Sprache übersetzt. Dies entspricht dem aktuellen Status von LC_MESSAGES in POSIX.1-2008. Gebietsschemaspezifische Nachrichten sind noch nicht erforderlich.

Die historische Variable MANPATH ist in POSIX nicht enthalten, da weder versucht wird, Namenskonventionen für Referenzseitendateien anzugeben, noch zu verlangen, dass es sich überhaupt um Dateien handelt. Bei einigen Implementierungen kann es sich um eine echte Datenbank, eine Hypertext-Datei oder sogar um feste Zeichenfolgen in der ausführbaren Man-Datei handeln. Die Standardentwickler betrachteten die Portabilität von Referenzseiten als außerhalb ihres Arbeitsbereichs liegend. Benutzer sollten sich jedoch bewusst sein, dass MANPATH auf einer Reihe historischer Systeme implementiert ist und dass es verwendet werden kann, um das Suchmuster für Referenzseiten aus den verschiedenen Kategorien (Dienstprogramme, Funktionen, Dateiformate usw.) beim Systemadministrator anzupassen Zeigt den Speicherort und die Konventionen für Referenzseiten im System an.

...

Die Diskussion der Paginator- Begründung von der Mailx-Seite :

Der Paginator, der ausgewählt wird, wenn PAGER null oder nicht gesetzt ist, ist teilweise nicht angegeben, um die historische Praxis von System V zu ermöglichen, pg als Standard zu verwenden. Das Umgehen der Paginierungsfunktion, beispielsweise durch die Erklärung, dass Katze der Paginator ist, würde die beabsichtigte Bedeutung dieser Beschreibung nicht erfüllen. Jeder "tragbare Benutzer" müsste jedoch PAGER explizit einstellen, um seinen bevorzugten Paginator auf allen Systemen zu erhalten. Die Auswahl des Paginators wurde im Gegensatz zur Auswahl des VISUAL-Editors (vorgeschrieben als vi) teilweise nicht spezifiziert, da die meisten historischen Pager einem gemeinsamen Thema der Benutzereingabe folgen, während sich die Editoren dramatisch unterscheiden.

Andrew Henle
quelle