Erste Schritte mit „man“: ein paar Fragen

Erste Schritte mit „man“: ein paar Fragen

Ich habe Probleme mit Mann:

  1. Wie kann ich Abschnitte einer Manpage anzeigen? Wie kann ich herausfinden, welche Abschnitte eine Manpage enthält? Laut dem Parameter „to“ muss ich eine Liste der verfügbaren „Abschnitte“ einer Manpage erhalten. Wenn ich jedoch versuche, verfügbare Abschnitte von , , oder mit man man -Sanzuzeigen : , erwarte ich eine Liste, aber ich erhalte nur: Welche Manpage möchten Sie?gitlspwdman -S git

  2. Ich habe noch eine zweite Frage: Wie kann ich eine Kurzversion/Vorschau einer Manpage anzeigen? Auch das muss ich herausfinden. Ich konnte keinen Parameter finden, der nach dem klingt, was ich tun möchte.

PS: Ich verwende eine Shell auf MacOS Sierra

Antwort1

Die einfache Antwort:

Manpages nichtenthaltenAbschnitte; Abschnitte enthalten Manpages.

Dies bezieht sich auf die nummerierten Abschnitte, von denen Sie sprechen. Es kann zwei Manpages mit demselben Namen geben, aber in zwei unterschiedlichen (nummerierten) Abschnitten – zum Beispiel . printfDie printf(1)Manpage behandelt das Kommandozeilentool. Die printf(3)Manpage behandelt den C-Funktionsaufruf.

Sie können beide Manpages nacheinander anzeigen, indem Sie Folgendes ausführen:

man -a printf

Wenn Sie das Erste beenden, wird das Zweite angezeigt.

Sie können sehen, in welchen Abschnitten es vorkommt, ohne einen der Abschnitte zu öffnen, indem Sie Folgendes ausführen:

man -aw printf

Neben den nummerierten Abschnittenin welchemManpages existieren, sind die einzelnen Manpages auch aufgeteiltvisuellmit separaten Überschriften und Unterüberschriften wie „Name“, „Zusammenfassung“, „Beschreibung“ usw.

Diese sindAuchSie werden zwar „Abschnitte“ genannt, aber die Verwendung des Wortes „Abschnitt“ unterscheidet sich deutlich von der oben beschriebenen nummerierten Abschnitte.

Antwort2

Früher bestand das Online-Handbuch ("online" im Gegensatz zu "gedruckt") aus acht Abschnitten, später kamen jedoch noch weitere hinzu. Diese Abschnitte sind 1, 2, ..., 8, also würden Sie etwas wie

man -S 4 xyz

um die Manpage für xyz in Abschnitt 4 zu erhalten.

Tatsächlich ist die Angabe eines Abschnitts nur dann wichtig, wenn in mehreren Abschnitten Manpages zum gleichen Schlüsselwort vorhanden sind.

Zum Beispiel:

man printf

Erträge

PRINTF(1)                                                         User Commands

NAME
       printf - format and print data

SYNOPSIS
       printf FORMAT [ARGUMENT]...
       printf OPTION

DESCRIPTION
       Print ARGUMENT(s) according to FORMAT, or execute according to OPTION
...

während

man -S 3 printf

Erträge

PRINTF(3)                                                   Linux Programmer's Manual

NAME
       printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf - formatted output conversion

SYNOPSIS
       #include <stdio.h>

       int printf(const char *format, ...);
       int fprintf(FILE *stream, const char *format, ...);
       int dprintf(int fd, const char *format, ...);
       int sprintf(char *str, const char *format, ...);
       int snprintf(char *str, size_t size, const char *format, ...);
...

Versuchen Sie es man -S x intromit x= 1,2,3,..., um einen Einstieg in die verschiedenen Abschnitte zu erhalten.

Manchmal findet man Aussagen wie:... fork(2)wird verwendet, um einen neuen Prozess zu erstellen. Darauf folgt häufig execl(3)...Dies zeigt an, dass sich die Manpage für forkin Abschnitt 2 und die Manpage für execlin Abschnitt 3 befindet.

Wie kann ich eine Kurzversion/Vorschau einer Manpage anzeigen?

Ich bin mir nicht sicher, was Sie damit meinen. manbietet nichts Ähnliches wie Get-HelpPowerShell. whatisgibt Ihnen eine sehr kurze Beschreibung, wie

whatis man
man                  (1)  - format and display the on-line manual pages
man                  (1p)  - display system documentation
man                  (7)  - macros to format man pages
man []               (1)  - format and display the on-line manual pages
man []               (1p)  - display system documentation
man []               (7)  - macros to format man pages
man []               (7)  - pages - conventions for writing Linux man pages
man-pages            (7)  - conventions for writing Linux man pages
man.conf []          (5)  - configuration data for man
man.conf [man]       (5)  - configuration data for man

Antwort3

Das Argument -S bewirkt nicht das, was Sie möchten. Es dient dazu, anzugeben, in welchen Kategorien von Manpages Sie suchen möchten.

Wenn es eine automatisierte Methode zum Anzeigen der Abschnitte einer Manpage gibt, kenne ich sie nicht. Ich würde Tools wie grep/sed/awk verwenden, um die Manpage zu analysieren und den Text zu extrahieren, der mich interessiert, z. B.:

man ls|grep -v -e '^$' -e '^[[:space:]]'

Der obige Code ist keine vollständige Lösung. Er druckt auch die Kopf- und Fußzeile der Manpage aus. Ich vertraue darauf, dass Sie ihn so ändern können, dass er Ihren Anforderungen entspricht, oder eine bessere Implementierung finden können ;)

Ebenso kann die Anforderung einer Manpage-Vorschau ganz einfach durchWeiterleitung der Ausgabedes Menschen in ein anderes Werkzeug. Ich würde empfehlenKopffür diese Aufgabe.

Antwort4

[1.]

Ich würde eine Liste erwarten, aber ich bekomme nur: Welche Manualpage möchten Sie?

-Swird nicht verwendet, um eine Liste von Abschnitten anzuzeigen, sondern fordert Sie auf, eine Liste von Abschnitten zu übergeben inIhre gewünschte Rubrikensuchreihenfolge. Z.B

xb@dnxb:/tmp$ man -S=7,6,5,4,3,2 ls
No manual entry for ls
See 'man 7 undocumented' for help when manual pages are not available.
xb@dnxb:/tmp$ 

Oben -S=7,6,5,4,3,2sehen Sie, dass die Suchreihenfolge für Abschnitte in dieser Liste von links nach rechts beginnt. Wenn das Handbuch lsAbschnitt 7 enthält, wird dieser angezeigt. Wenn nicht, wird versucht, Abschnitt 6 zu durchsuchen, und so weiter. Wenn am Ende dieser Liste kein Abschnitt vorhanden ist, wird „Kein manueller Eintrag für ls“ angezeigt.obwohl Abschnitt 1 existiert. Aber dieses funktioniert, weil Abschnitt 1 in der Liste:

xb@dnxb:/tmp$ man -S=7,6,5,4,3,2,1 ls
xb@dnxb:/tmp$ 

Probieren Sie diese beiden aus, um zu beweisen, dass die Suchreihenfolge von -Slinks nach rechts verläuft:

xb@dnxb:/tmp$ man -S 1,1posix ls
xb@dnxb:/tmp$ man -S 1posix,1 ls
xb@dnxb:/tmp$ 

Sie können den genauen Abschnitt auch einfach übergeben, ohne -S:

xb@dnxb:/tmp$ man 5 ls
No manual entry for ls in section 5
See 'man 7 undocumented' for help when manual pages are not available.
xb@dnxb:/tmp$ man 1posix ls
xb@dnxb:/tmp$

Die Standardsortierung finden Sie hier (Dieser Dateipfad wird in beschrieben man man), Suchreihenfolge von links nach rechts:

xb@dnxb:/tmp$ \grep SECTION /etc/manpath.config
# the default is 1, n, l, 8, 3, 0, 2, 5, 4, 9, 6, 7. Multiple SECTION
SECTION         1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7
xb@dnxb:/tmp$ 

Wie kann ich Abschnitte einer Manpage anzeigen? Wie kann ich herausfinden, welche Abschnitte eine Manpage bietet?

Verwenden Sie apropos [-e], whatis, oder man -k:

xb@dnxb:/tmp$ apropos statvfs #OR man -k statvfs
fstatvfs (2)         - get filesystem statistics
fstatvfs (3)         - get filesystem statistics
fstatvfs (3posix)    - get file system information
statvfs (2)          - get filesystem statistics
statvfs (3)          - get filesystem statistics
statvfs (3posix)     - get file system information
statvfs.h (7posix)   - VFS File System information structure
sys_statvfs.h (7posix) - VFS File System information structure
xb@dnxb:/tmp$ apropos -e statvfs #OR whatis statvfs
statvfs (2)          - get filesystem statistics
statvfs (3)          - get filesystem statistics
statvfs (3posix)     - get file system information
xb@dnxb:/tmp$ 

[2.]

Wie kann ich eine Kurzversion/Vorschau einer Manpage anzeigen?

Ich sehe mir immer --helpdie gekürzte Version des Handbuchs an (Haftungsausschluss: Nicht ganz gleichwertig), zB:

xb@dnxb:/tmp$ mplayer --help
Usage:   mplayer [options] [url|path/]filename

Basic options: (complete list in the man page)
 -vo <drv>        select video output driver ('-vo help' for a list)
 -ao <drv>        select audio output driver ('-ao help' for a list)
 vcd://<trackno>  play (S)VCD (Super Video CD) track (raw device, no mount)
 dvd://<titleno>  play DVD title from device instead of plain file
 -alang/-slang    select DVD audio/subtitle language (by 2-char country code)
 -ss <position>   seek to given (seconds or hh:mm:ss) position
 -nosound         do not play sound
 -fs              fullscreen playback (or -vm, -zoom, details in the man page)
 -x <x> -y <y>    set display resolution (for use with -vm or -zoom)
 -sub <file>      specify subtitle file to use (also see -subfps, -subdelay)
 -playlist <file> specify playlist file
 -vid x -aid y    select video (x) and audio (y) stream to play
 -fps x -srate y  change video (x fps) and audio (y Hz) rate
 -pp <quality>    enable postprocessing filter (details in the man page)
 -framedrop       enable frame dropping (for slow machines)

Basic keys: (complete list in the man page, also check input.conf)
 <-  or  ->       seek backward/forward 10 seconds
 down or up       seek backward/forward  1 minute
 pgdown or pgup   seek backward/forward 10 minutes
 < or >           step backward/forward in playlist
 p or SPACE       pause movie (press any key to continue)
 q or ESC         stop playing and quit program
 + or -           adjust audio delay by +/- 0.1 second
 o                cycle OSD mode:  none / seekbar / seekbar + timer
 * or /           increase or decrease PCM volume
 x or z           adjust subtitle delay by +/- 0.1 second
 r or t           adjust subtitle position up/down, also see -vf expand

 * * * SEE THE MAN PAGE FOR DETAILS, FURTHER (ADVANCED) OPTIONS AND KEYS * * *

MPlayer 1.3.0 (Debian), built with gcc-5.4.0 (C) 2000-2016 MPlayer Team
xb@dnxb:/tmp$ 

verwandte Informationen