Например, страница fork
справочника находится в разделе «Системные вызовы» с номером 2:
man 2 fork
Как вы видите, что еще раздел 2, не прибегая к Google?
Например, страница fork
справочника находится в разделе «Системные вызовы» с номером 2:
man 2 fork
Как вы видите, что еще раздел 2, не прибегая к Google?
Ответы:
Эта команда перечисляет отсортированные имена всех записей в данном разделе:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
Если вы хотите увидеть пути, используйте:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
Это говорит man
искать в разделе все команды, используя шаблон с подстановочными знаками *
(обратная косая черта заключена в кавычки, чтобы оболочка не интерпретировала его). -a
находит все совпадения, -W
печатает пути вместо отображения страниц и -S 1
указывает первый раздел. Измените на 1
любой раздел, который вы хотите найти.
Команда sed
удаляет расширения имени файла; удалите его, если хотите увидеть полные имена файлов. sort
сортирует результаты ( -u
удаляет дубликаты).
Для удобства повторного использования это определяет функцию оболочки Bash:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
Например, вы можете вызвать его так, mansect 3
чтобы увидеть записи в третьем разделе.
[Проверено на macOS.]
uniq
в конвейер, не исправляет.
sort -u
чтобы удалить дубликаты.
Чтобы вывести список всех установленных man-страниц из определенного раздела, вы можете использовать apropos :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Manpages обычно размещаются /usr/share/man
, но проверяются $MANPATH
и организованы в такие разделы:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
Итак, чтобы вывести список всех установленных разделов 2, выполните:
ls /usr/share/man/man2/
Или более полный:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
У последнего будут проблемы, если у вас есть каталоги $MANPATH
с пробелами в их именах.
В большинстве дистрибутивов вы также можете проверить доступные справочные страницы с помощью инструмента пакета, например, в дистрибутивах, производных от Debian, которые вы можете использовать apt-file
следующим образом:
apt-file search /man2/
lman 2
и перечисляет неукрашенное имя для каждой страницы в новой строке и выводит их на страницу. Тело функции:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
Я знаю, что это очень старый вопрос, однако ответы, приведенные здесь, не сработали для меня. Поэтому я придумал следующую однострочную версию, которая работает на Ubuntu 18.04 и macOS Mojave, 10.14.6:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
Быстрый бег вниз:
$(man --path | tr ':' ' ')
получить текущие пути к страницам руководстваfind <man paths> -type f -path '*man2*' -exec basename {} \;
получает имена всех обычных файлов в путях человекаsed
избавляется от расширения файлаsort
в алфавитном порядке.