Linux: apropos — поиск по man-страницам

Автор: | 05/02/2016
 

linux_logoКроме опции -k для man, которая позволяет выполнить поиск по страницам руководства:

$ man -k bash
man: can't set the locale; make sure $LC_* and $LANG are correct
bash (1)             - GNU Bourne-Again SHell
bash-builtins (7)    - bash built-in commands, see bash(1)
bashbug (1)          - report a bug in bash
builtins (7)         - bash built-in commands, see bash(1)
rbash (1)            - restricted bash, see bash(1)

можно использовать утилиту apropos, которая позволяет выполнить более полный и точный поиск.

Синтаксис:

$ apropos keyword(s)

apropos не выполняет поиск по всем страницам, вместо этого — он использует базу данных, сгенерированную из заголовков, номера и описания man-страниц с помощью whatis.

Расположение его базы зависит от системы, для RHEL/CentOS — это  файл /var/cache/man/whatis:

$ head -n 5 /var/cache/man/whatis
a2p                  (1)  - Awk to Perl translator
a64l                 (3)  - convert between long and base-64
a64l                 (3p)  - convert between a 32-bit integer and a radix-64 ASCII string
ab                   (1)  - Apache HTTP server benchmarking tool
abbrev [Text::Abbrev] (3pm)  - create an abbreviation table from a list

Полезные опции apropos:

  • -r, --regex: интерпретировать каждое ключевое слово как регулярное выражение;
  • -w, --wildcard: интерпретировать каждое ключевое слово как shell-шаблоны;
  • -e, --exact: будет выполнен поиск по точному соответствию ключевого слова/слов;
  • -a, --and: отображать результаты, которые точно совпадают со всеми ключевыми словами;

Примеры:

$ apropos bash
bash (1)             - GNU Bourne-Again SHell
bash-builtins (7)    - bash built-in commands, see bash(1)
bashbug (1)          - report a bug in bash
builtins (7)         - bash built-in commands, see bash(1)
rbash (1)            - restricted bash, see bash(1)

Поиск по нескольким словам:

$ apropos bash whois
apropos: can't set the locale; make sure $LC_* and $LANG are correct
bash (1)             - GNU Bourne-Again SHell
bash-builtins (7)    - bash built-in commands, see bash(1)
bashbug (1)          - report a bug in bash
builtins (7)         - bash built-in commands, see bash(1)
rbash (1)            - restricted bash, see bash(1)
whois (1)            - client for the whois directory service
whois.conf (5)       - alternative WHOIS servers list for whois client

Поиск по командам, которые имеют «delete» в описании:

$ apropos -w "*delete*"
apropos: can't set the locale; make sure $LC_* and $LANG are correct
git-branch (1)       - List, create, or delete branches
git-replace (1)      - Create, list, delete refs to replace objects
git-symbolic-ref (1) - Read, modify and delete symbolic refs
git-tag (1)          - Create, list, delete or verify a tag object signed with GPG
groupdel (8)         - delete a group
nfacct (8)           - command line tool to create/retrieve/delete accounting objects
shred (1)            - overwrite a file to hide its contents, and optionally delete it
systemd-tmpfiles (8) - Creates, deletes and cleans up volatile and temporary files and directories
systemd-tmpfiles-clean.service (8) - Creates, deletes and cleans up volatile and temporary files and directories
systemd-tmpfiles-clean.timer (8) - Creates, deletes and cleans up volatile and temporary files and directories
systemd-tmpfiles-setup-dev.service (8) - Creates, deletes and cleans up volatile and temporary files and directories
systemd-tmpfiles-setup.service (8) - Creates, deletes and cleans up volatile and temporary files and directories
tr (1)               - translate or delete characters
userdel (8)          - delete a user account and related files

Поиск с использование регулярного выраженния:

$ apropos -r '^git.*$' | head -n 5
apropos: can't set the locale; make sure $LC_* and $LANG are correct
Git (3pm)            - Perl interface to the Git version control system
git (1)              - the stupid content tracker
git-add (1)          - Add file contents to the index
git-am (1)           - Apply a series of patches from a mailbox
git-annotate (1)     - Annotate file lines with commit information

Ссылки по теме

The apropos Command

apropos, whatis and makewhatis