Wie springe ich zu einer bestimmten Überschrift in einer Manpage?


9

Beispiel: ssh_config

Ich habe dafür einen Dateityp in vim festgelegt. Ich möchte, dass das Hilfsprogramm ist

man

Natürlich funktioniert das nicht, wenn ich ein Wort habe, sagen wir

ServerAliveCountMax

Ich erhalte eine Fehlermeldung, da es keinen Man Pager für ServerAliveCountMax gibt, befindet er sich in der Manpage von ssh_config.

Gibt es eine Möglichkeit, über die Befehlszeile zu einer Zeichenfolge zu springen oder eine Art Befehl innerhalb von man auszuführen? Ähnlich wie Info eigentlich:

info screen Miscellaneous

Ich werde zum Abschnitt "Verschiedenes" der Info-Seite für Bildschirme weitergeleitet.

Ist das mit dem Menschen möglich? Sogar eine Suche würde dienen ...

BEARBEITEN: Ich verwende OSX 10.6.5. mit dem Standardmann (/ usr / bin / man)

EDIT: Ich spreche ein bisschen Dialekt;), also wurde ich zur richtigen Antwort geführt:

man -P 'less -p PATTERN' ssh_config  

Ist der Aufruf unter OSX / * BSD es scheint.

Antworten:


11

Über die Befehlszeile für GNU man:

man --pager='less -p ^ENVIRONMENT' man

oder für BSD man:

man -P 'less -p ^ENVIRONMENT' man

springt zur Überschrift "UMWELT" der Manpage für man.

Hier ist eine praktische Funktion:

mans () {    # Bash
    local pages string
    if [[ -n $2 ]]
    then
        pages=(${@:2})
        string="$1"
    else
        pages=$1
    fi
    # GNU man
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
    # BSD man
    # man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}

Beispiele:

Normalerweise verwenden:

mans bash

Gehen Sie zur Überschrift "BESCHREIBUNG":

mans ^DESCRIPTION bash

Gehen Sie nacheinander zur Überschrift "BESCHREIBUNG" jeder Manpage (drücken Sie qund Enter, um zur nächsten zu gelangen):

mans ^DESCRIPTION bash ksh zsh

Gehen Sie zur Unterüberschrift "Parametererweiterung" (Sie können mit regulären Ausdrücken nach beliebigen Zeichenfolgen suchen):

mans '^ *Parameter Expansion' bash

Suchen Sie nach dem neuesten regulären Ausdruck, den Sie in Less verwendet haben:

mans '' bash

Die gesuchte Übereinstimmung wird nicht hervorgehoben. Wenn Sie es vorziehen, entfernen Sie einfach die -Gaus den Optionen zu less.

Diese Funktion unternimmt keinen Versuch, die anderen unterstützten Argumente und Optionen zu verarbeiten man.


Vielversprechend, ich habe meine Frage bearbeitet. Ich sehe, dass Sie das entweder mit Macports oder Linux ausgeführt haben. Ich habe eine -P-Option in der beschissenen Liste der BSD-Stiloptionen.
Chiggsy

Danke, ich habe es verstanden, aber nochmals vielen Dank! BAH, ich kann Ihre neue Antwort nicht noch einmal
positiv bewerten

@Chiggsy: Ich nehme an, es hat -Pfunktioniert. Wenn ja, werde ich es meiner Antwort hinzufügen.
Bis auf weiteres angehalten.

Für die Aufzeichnung habe ich Ihre ursprüngliche Antwort positiv bewertet. Es war völlig richtig. Ihre Bearbeitung konnte ich nicht verbessern. Ich wollte aber ...
kichernd

@Chiggsy: Soll ich -Pmeiner Antwort den BSD-Stil hinzufügen, damit ich später darauf zurückgreifen kann ?
Bis auf weiteres angehalten.

2

Sie können PAGERfür diesen Lauf eine Variable verwenden, um BSD / GNU-Kompatibilitätsprobleme zu vermeiden.

Verwenden Sie "Anführungszeichen, wenn der Abschnittstitel Leerzeichen enthält:

PAGER='less -p ^"ENVIRONMENT"' man man


1

/In weniger wird eine Vorwärtssuche und ?eine Rückwärtssuche durchgeführt. Drücken Sie h, um eine vollständige Liste anzuzeigen.


Siehe meinen Kommentar oben und tatsächlich meine Frage.
Chiggsy

1

In man können Sie /eingeben, gefolgt von einem passenden Muster, z. B. um den Abschnitt DEFAULT KEY BINDINGS auf der Bildschirm-Manpage zu finden, den Sie eingeben würden

/^DEFAULT KEY BINDINGS

Ja. Das ist wahr, aber man muss im Menschen sein, um es zu tun. Ich möchte in einem Schritt von der Shell dazu kommen.
Chiggsy

1

Ich benutze einen einfachen Trick, um relativ schnell zwischen Abschnitten in Manpages zu springen: Ich /^[A-Z]drücke nund dann kann ich drücken und Nvorwärts und rückwärts springen.

Der Suchbegriff verwendet die Grundstruktur typischer Manpages. Die Hauptabschnitte sind in Großbuchstaben geschrieben und beginnen eine Zeile ohne Einrückung, daher sollten sie am Zeilenanfang erscheinen.


1

Ich mag die --pager/ -P-Lösung nicht, weil sie manmöglicherweise verwendet wird, aber nicht direkt aufgerufen wird (z. B. wenn Sie sie verwenden git help ...). Die Verwendung eines envvar ist also flexibler. Aber ich finde die Verwendung PAGER='less ...irgendwie redundant, weil lessnormalerweise sowieso der Standard-Pager ist. Mit der LESSenvvar können Sie Parameter direkt an übergeben less. Dies hat auch weniger Probleme beim Zitieren. Zum Beispiel wird dies korrekt zum rechten Abschnitt springen, obwohl es ein Leerzeichen enthält:

LESS="-p file system" git help glossary

1
Mit dieser Antwort ganz oben! Danke :)
Patryk Obara
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.