Наприклад, підручна сторінка 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
для видалення дублікатів.
Щоб перелічити всі встановлені довідкові сторінки з певного розділу, ви можете використовувати apropos :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Манпажі зазвичай розміщують /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 ':' ' ')
щоб отримати поточні шляхи до man сторінокfind <man paths> -type f -path '*man2*' -exec basename {} \;
отримує назви файлів усіх звичайних файлів у man-pathsed
позбавляється від розширення файлуsort
в алфавітному порядку.