Як ви виводите список усіх чоловічих сторінок у певному розділі?


25

Наприклад, підручна сторінка fork, наприклад, знаходиться в розділі "Системні дзвінки", який містить номер 2:

man 2 fork

Як ви бачите, що ще є розділом 2, не звертаючись до Google?


Без google, але через Інтернет, перейдіть до man7.org/linux/man-pages/dir_section_2.html (або головну сторінку тут: kernel.org/doc/man-pages )
belacqua

Відповіді:


4

Ця команда перераховує впорядковані назви всіх записів у даному розділі:

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


Приємно - спасибі. Я отримую кілька дублікатів (наприклад, шляхи в /Applications/Xcode.app та "Accelerate" в розділі 7), але нічого, що вводити uniqв конвеєр, не виправить.
xyz

@xyz: я оновив команду сортування sort -uдля видалення дублікатів.
Кріс Пейдж

24

Щоб перелічити всі встановлені довідкові сторінки з певного розділу, ви можете використовувати apropos :

apropos -s 2 .  # use an regex for apropos . means anything
apropos -s 2 -w '*'  # use unix globbing for apropos

"apropos: -s: невідомий варіант"
Michael Mrozek

@MichaelMrozek яку систему ви використовуєте? Це працює для мене, наприклад: вихід apropos -s 2 -w '*'
Ульріх Дангел,

Спасибі. Опція -s не присутня в Mac OS X apropos, який, імовірно, є BSD.
xyz

@ f100 Ах гаразд, можливо спробуйтеman -a -s 2 '*'
Ульріх Дангель

Це здається більше схожим, але замість того, щоб перераховувати їх, воно фактично викликає глядача для кожного по черзі. Я зламав функцію робити список, який я розмістив в іншому коментарі. Ймовірно, є проблеми, але мені цього достатньо :)
xyz

20

Манпажі зазвичай розміщують /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/

1
Спасибі - Це був мій старт, який мені знадобився. Я зробив функцію оболонки, яка виконується, наприклад, lman 2і перераховує непризначене ім’я для кожної сторінки в новому рядку та розміщує їх на сторінках. Тіло функції:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
xyz

1

У Mac OS X єдине, що я можу взяти на роботу - man -k . | grep -F '(3)'це перелік усіх у розділі 3.


0

Я знаю, що це дуже давнє запитання, однак відповіді, надані тут, для мене не спрацювали. Тому я придумав наступний однокласник, який працює на Ubuntu 18.04 та macOS Mojave, 10.14.6:

find $(man --path | tr ':' ' ') -type f -path '*man2*' \
  -exec basename {} \; | sed 's/\..*//' | sort

Швидкий біг вниз:

  • форма Thors відповідь: $(man --path | tr ':' ' ')щоб отримати поточні шляхи до man сторінок
  • find <man paths> -type f -path '*man2*' -exec basename {} \; отримує назви файлів усіх звичайних файлів у man-path
  • sed позбавляється від розширення файлу
  • sort в алфавітному порядку.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.