3

Мне интересно, в чем разница между "командой человека 3" и "командой человека"?

Я прочитал в вики (http://en.wikipedia.org/wiki/Man_page), что man 3 используется в Linux в разделе 3 справочных страниц. А в разделе 3 говорится о функциях библиотеки, в частности о стандартной библиотеке языка C.

Я попробовал "man 3 ls" и получил это:

No entry for ls in section 3 of the manual

Интересно, когда использовать человека 3, а когда использовать человека, и служат ли они разным целям?

Благодарю.

4 ответа4

11

man 3 ls покажет вам только справочную страницу для ls в разделе 3 руководства. Раздел 3 охватывает функции библиотеки; поскольку (вероятно) библиотечной функции с именем ls , она ничего не найдет.

Команда man без номера раздела ищет разделы в предопределенном порядке, который я не помню, но, вероятно, он будет близок к числовому порядку, начиная с 1. Таким образом, man ls найдет man-страницу ls в разделе 1, где описаны пользовательские команды.

Разделы (в моей системе Ubuntu):

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

Указание раздела может быть полезно для вещей, которые существуют с одним и тем же именем в нескольких разделах. Например, man printf покажет вам страницу man для пользовательской команды printf в разделе 1; чтобы увидеть страницу руководства для printf , используйте man 3 printf . Вы часто будете видеть эти справочные страницы, называемые printf(1) и printf(3) , соответственно.

Кража Заимствование из ответа Абернерта, обычно можно увидеть пользовательскую команду (раздел 1), которая является оберткой для системного вызова (раздел 2) или библиотечного вызова (раздел 3) с тем же именем; chown и chmod - хорошие примеры этого.

3

Как говорит ваш вопрос, раздел 3 предназначен для библиотечных функций, охватывающих стандартную библиотеку C. В стандартной библиотеке C нет функции ls , поэтому, когда вы запрашиваете ее man-страницу, ее нет.

Я понимаю, почему вы можете быть смущены. Во многих случаях есть инструмент, который просто упаковывает некоторые функции C или POSIX в простой исполняемый файл командной строки. Например, инструмент chmod (в разделе 1) в основном просто анализирует ваши аргументы и вызывает функцию chmod POSIX (в разделе 2) для каждого файла. Таким образом, вы можете набрать man 1 chmod для получения документации по инструменту и man 2 chmod для получения документации по функции библиотеки, которую использует инструмент. Если вы просто man chmod , он выберет раздел 1 вместо раздела 2, так что вы получите инструмент.

Но это не всегда так. Например, основная функция, которую использует ls это, вероятно, readdir . Таким образом, вы можете найти инструмент с помощью man 1 ls и просмотреть функцию с помощью man 3 readdir . В этом случае man readdir , вероятно, будет делать то же самое, что и man 3 readdir , потому что в разделе с более высоким приоритетом с тем же именем ничего нет.

1

Некоторые страницы существуют в разных записях человека. Затем, чтобы перейти к конкретному, вы можете захотеть использовать тот раздел, который хотите увидеть. Например, посмотрите, что whatis find . Вы будете ссылаться на три разные страницы. Попробуйте использовать каждый из идентификаторов разделов, которые он выводит в скобках.

0

Иногда, когда вы читаете man-страницы или ищете определенную страницу с помощью man -k, вы можете получить две страницы с одинаковыми именами, но в разных библиотеках:

[mini-nevie:~] nevinwilliams% man -k route
route(4)                 - kernel packet forwarding database
route(8)                 - manually manipulate the routing tables

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

man 4 route

читать первым и

man 8 route

читать вторую.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .