Начало работы с "man": несколько вопросов

Начало работы с "man": несколько вопросов

У меня проблемы с мужчиной:

  1. Как мне отобразить разделы страницы руководства? Как мне выяснить, какие разделы предлагает страница руководства? Согласно man man -Sпараметру, мне нужно получить список «разделов», доступных на странице руководства. Но если я попытаюсь отобразить доступные разделы git, ls, или pwdс помощью: man -S git. Я ожидал бы список, но все, что я получаю, это: Какую страницу руководства вы хотите?

  2. У меня также есть второй вопрос: как мне отобразить короткую версию/превью страницы руководства? Это тоже моя задача — разобраться. Я не смог найти параметр, который бы звучал как то, что я хочу сделать.

PS: Я использую оболочку на MacOS Sierra

решение1

Простой ответ:

Страницы руководства несодержатьразделы; разделы содержат страницы руководства.

Это относится к пронумерованным разделам, о которых вы говорите. Могут быть две страницы руководства с одинаковым названием, но в двух разных (пронумерованных) разделах, например, printf. printf(1)Страница руководства охватывает инструмент командной строки. printf(3)Страница руководства охватывает вызов функции C.

Вы можете просмотреть обе страницы руководства последовательно, выполнив:

man -a printf

Когда вы выйдете из первого, вы увидите второе.

Вы можете увидеть, в каких разделах он появляется, не открывая ни один из них, выполнив:

man -aw printf

Помимо пронумерованных разделовв которомсуществуют страницы руководства, отдельные страницы руководства также разделенывизуальнос отдельными заголовками и подзаголовками, такими как «Название», «Синопсис», «Описание» и т. д.

Этотакженазываются «разделами», но это совершенно иное использование слова «раздел» по сравнению с пронумерованными разделами, описанными выше.

решение2

В старые времена онлайн-руководство («онлайн» в отличие от «печатного») состояло из восьми разделов, но позже было добавлено еще несколько. Эти разделы — 1, 2, ..., 8, так что вы бы набрали что-то вроде

man -S 4 xyz

чтобы получить страницу руководства для xyz в разделе 4.

На самом деле указание раздела имеет значение только в том случае, если для одного и того же ключевого слова существуют страницы руководства в нескольких разделах.

Например:

man printf

урожайность

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
...

пока

man -S 3 printf

урожайность

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, ...);
...

Попробуйте man -S x introиспользовать x= 1,2,3,..., чтобы получить представление о различных разделах.

Иногда можно встретить такие утверждения:... fork(2)используется для создания нового процесса; за этим часто следует execl(3)...Это означает, что страница руководства forkнаходится в разделе 2, а страница руководства execl— в разделе 3.

Как отобразить краткую версию/превью страницы руководства?

Я не уверен, что вы имеете в виду. manне предоставляет ничего подобного Get-Helpв PowerShell. whatisдает вам очень краткое описание, например

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

решение3

Аргумент -S не делает то, что вам нужно. Он нужен для указания, в каких категориях страниц руководства вы хотите искать.

Если есть автоматизированный метод отображения разделов страницы man, я его не знаю. Я бы посмотрел на такие инструменты, как grep/sed/awk, чтобы проанализировать страницу man и извлечь интересующий меня текст, например:

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

Приведенный выше код не является полным решением. Во-первых, он также выводит заголовок и нижний колонтитул страницы руководства. Я надеюсь, вы сможете изменить его так, чтобы он полностью соответствовал вашим требованиям, или придумать лучшую реализацию ;)

Аналогично запрос на получение «предварительного просмотра» страницы руководства можно легко выполнить с помощьютрубопровод выводачеловека в другой инструмент. Я бы рекомендовалголовадля этой задачи.

решение4

[1.]

Я ожидал список, но получаю только: Какую страницу руководства вы хотите?

-Sне используется для отображения списка разделов, вместо этого он просит вас передать список разделовжелаемый порядок поиска раздела. Например

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$ 

Выше -S=7,6,5,4,3,2показано, что порядок поиска разделов начинается слева направо в этом списке. Если руководство lsсодержит раздел 7, оно будет показано. Если нет, оно попытается найти раздел 6 и т. д. Если в конце этого списка нет раздела, то будет написано "No manual entry for ls"хотя раздел 1 существует. Но это работает, потому что раздел 1 в списке:

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

Поиграйтесь с этими двумя, чтобы доказать, что порядок поиска -S— слева направо:

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

Вы также можете просто пройти точный раздел, без -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$

Порядок по умолчанию можно найти здесь (путь к этому файлу описан в man man), порядок поиска слева направо:

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$ 

Как мне отобразить разделы man-страницы? Как мне узнать, какие разделы предлагает man-страница?

Используйте apropos [-e], whatis, или 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.]

Как отобразить краткую версию/превью страницы руководства?

Я всегда стараюсь --helpпросматривать сокращенную версию руководства (отказ от ответственности: это не совсем эквивалент), например:

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$ 

Связанный контент