Начало работы с «человеком»: несколько вопросов

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

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

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

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

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

Человеческие страницы не содержат разделов; разделы содержат справочные страницы.

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

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

 man -a printf 

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

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

 man -aw printf 

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

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

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

 man -S 4 xyz 

получить man-страницу для 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) Это указывает на то, что execl(3) страница fork находится в разделе 2, а execl страница для 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 

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

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

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

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

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

[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 и т. Д. Если в конце этого списка нет раздела, он будет говорить «Нет ручного ввода для 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 nl 8 3 2 3posix 3pm 3perl 5 4 9 6 7 xb@dnxb:/tmp$ 

Как отображать разделы 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$