
У меня проблемы с мужчиной:
Как мне отобразить разделы страницы руководства? Как мне выяснить, какие разделы предлагает страница руководства? Согласно
man man
-S
параметру, мне нужно получить список «разделов», доступных на странице руководства. Но если я попытаюсь отобразить доступные разделыgit
,ls
, илиpwd
с помощью:man -S git
. Я ожидал бы список, но все, что я получаю, это: Какую страницу руководства вы хотите?У меня также есть второй вопрос: как мне отобразить короткую версию/превью страницы руководства? Это тоже моя задача — разобраться. Я не смог найти параметр, который бы звучал как то, что я хочу сделать.
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$