Wie springe ich zu einem bestimmten Flag in einer Unix-Manpage?

23

Wie kann ich beim Lesen einer Unix-Manpage im Terminal einfach zur Beschreibung eines bestimmten Flags springen?

Zum Beispiel muss ich die Bedeutung der -oFlagge für kennen mount. Ich renne man mountund will zu der Stelle springen, wo -oes beschrieben ist. Derzeit suche ich /-ojedoch, dass diese Option an mehreren Stellen vor dem Abschnitt erwähnt wird, der sie tatsächlich beschreibt, sodass ich ziemlich viel herumspringen muss.

Vielen Dank.

dotancohen
quelle

Antworten:

27

Was ich tue, ist, ein paar Leerzeichen vor die Flagge zu setzen:

/     -o

Das ist nicht 100% zuverlässig, aber Sie springen durch viel weniger Reifen. Wenn Sie eine noch bessere Erfolgsquote wünschen, versuchen Sie es "/^ +-o". Das würde Zeilen finden, die mit Leerzeichen beginnen und von -o gefolgt werden. Ich würde diese seltsame Saite allerdings nicht gerne oft tippen.

akostadinov
quelle
11

Ich habe diese Funktion in meinem definiert .bashrc

function manswitch () { man $1 | less -p "^ +$2"; }

was Sie wie folgt verwenden können

manswitch grep -r

Ich habe es von dieser Kommandozeile bekommen .

Hinweis: Das Argument für den -pSchalter von lessist ein regulärer Ausdruck, der weniger sagt, dass nach einer Zeile gesucht werden soll, die mit ( ^) einem oder mehreren Leerzeichen ( +) beginnt, gefolgt von dem Schalter (zweites Argument $2).

ggll
quelle
5

Sie können die Manpage auch an einer bestimmten Position über die Befehlszeile mit öffnen

man -P 'less -p "     -o"' mount
eilen
quelle
Es wurde dafür ausgezeichnet, dass es möglich ist, aber das ist viel mehr zu tippen als aus dem Menschen heraus zu suchen. Trotzdem danke!
Dotancohen
Das ist ziemlich nützlich, um jemanden an die genaue Stelle in der Manpage zu schicken :)
Ansturm
Ja, ich dachte nur, wenn ich aus irgendeinem Grund eine Manpage in einem Skript öffnen müsste, wäre das auch nützlich. Vielen Dank!
Dotancohen
3

@piccobellos Antwort ist großartig, aber es hat die Farben in meinen Manpages aufgefressen. Anstatt zu leiten less(da normalerweise manbereits verwendet less), übergebe ich einfach den geänderten lessBefehl an man:

function manswitch() { man -P "less -p \"^ +$2\"" $1 }

Dies behält die Funktionalität bei, die @piccobello in seiner Funktion hatte, behält jedoch die Farben bei.

Jorge Israel Peña
quelle
1

Die anderen Lösungen sind recht gut, aber denken Sie auch daran, dass Manpages nur Daten sind und Sie unter Linux fast alles damit machen können.

man some-command> file.txt

konvertiert die Seite in eine reine Textdatei, die Sie dann bearbeiten können. Ich behalte eine Kopie des bash-Handbuchs als Text in meinem bin-Verzeichnis, damit ich es einfach in meinen Texteditor laden kann, um nach Dingen zu suchen und sie zu kopieren und einzufügen, während ich Skripte bearbeite.

Oder Sie können es in Filter wie leiten

man some-command | grep-A Zeilen nach "einigem Muster"

Obwohl es in einem Terminal nicht funktioniert, habe ich (mithilfe eines Freundes) sogar ein Skript geschrieben, das eine Manpage aufruft und in einem Webbrowser anzeigt, damit ich die viel besseren Navigations- / Suchfunktionen verwenden kann als weniger. Es ist ein bisschen kde-abhängig, aber leicht zu ändern.

http://dl.dropbox.com/u/54584985/kman

Joe
quelle
3
Vielleicht möchten Sie es man://in Konqueror versuchen . KDE hat eine Manpage KIOSLAVE!
Dotancohen
@ Dotancohen - Cool. Wusste nichts davon.
Joe
@dotancohen -Ich habe es gerade in Delphin ausprobiert und es funktioniert auch, aber zeigt die Manpages als Verzeichnisse und Dateien an und startet Ihren Standardbrowser, wenn Sie auf eine Datei klicken. Ich verstehe den Teil über KIOSLAVE nicht. Ich habe es mit man: // kioslave versucht und es war dasselbe wie man: //.
Joe
@dotancohen - Egal - Ich habe in Wikipedia nach Kiosklaven gesucht. en.wikipedia.org/wiki/KIO
Joe
Ja, KDE hat so ziemlich alles. Genießen!
Dotancohen
1

Ich habe ein Tool namens flagman geschrieben , das genau das tut . Noch in der Entwicklung, aber bereits verwendbar. Beispielsweise:

$ ./flagman mount -o
       -o, --options opts
              Use the specified mount options.  The opts argument is a comma-separated list.  For example:

                     mount LABEL=mydisk -o noatime,nodev,nosuid


              For more details, see the FILESYSTEM-INDEPENDENT MOUNT OPTIONS and FILESYSTEM-SPECIFIC MOUNT OPTIONS sections.
richtig falten
quelle