В Linux команда apropos
помогает пользователям найти любую команду, используя её справочные страницы.
Содержание
Введение
На страницах руководства (man
) описаны командные функции, перечислены применимые аргументы и приведены примеры вариантов использования. Команда man
вызывает руководство по командам Linux с синтаксисом man имя_команды
. Поэтому незнание имени команды создает проблему.
Установка
Ubuntu
В дистрибутиве Ubuntu команда apropos
предустановлена:
oleg@mobile:~$ which apropos
/usr/bin/apropos
oleg@mobile:~$
Смотрим версию:
oleg@mobile:~$ apropos -V
apropos 2.9.1
oleg@mobile:~$
Arch Linux
Устанавливаем пакет man-db
, в который включена команда apropos
:
oleg@mobile:~:$ yay -S man-db
Sync Explicit (1): man-db-2.12.0-1
разрешение зависимостей...
проверка конфликтов...
Пакеты (2) libpipeline-1.5.7-1 man-db-2.12.0-1
Будет загружено: 1,13 MiB
Будет установлено: 2,36 MiB
:: Приступить к установке? [Y/n] y
Синтаксис
oleg@mobile:~$ apropos [ПАРАМЕТР...] КЛЮЧ...
Опции
- -d, --debug
- Показывать сообщения отладки
- -v, --verbose
- Выводить подробные предупреждающие сообщения
- -e, --exact
- Искать точное совпадения каждого ключа
- -r, --regex
- Считать каждый ключ регулярным выражением
- -w, --wildcard
- Ключ(и) содержит групповые символы
- -a, --and
- Требуется совпадение всех ключей
- -l, --long
- Не обрезать вывод по ширине терминала
- -C, --config-file=ФАЙЛ
- Использовать указанный пользовательских файл настроек
- -L, --locale=ЛОКАЛЬ
- Задать локаль для этого поиска
- -m, --systems=СИСТЕМА
- Использовать справочные страницы от других систем
- -M, --manpath=ПУТЬ
- Установить путь поиска справочных страниц в значение ПУТЬ
- -s, --sections=СПИСОК, --section=СПИСОК
- Искать только в этих секциях (разделяются двоеточиями)
- -?, --help
- Показать эту справку
- --usage
- Показать короткую справку по использованию
- -V, --version
- Показать номер версии программы
Обязательные или необязательные аргументы к длинным именам параметров остаются таковыми и к соответствующим коротким параметрам.
Использование в Linux команды apropos с примерами
Поиск по ключевому слову
Основное использование команды apropos
— поиск одного ключевого слова на страницах руководства. Запустив утилиту с ключевым словом list
находим экземпляры с его упоминанием:
oleg@mobile:~$ apropos list
acl (5) - Access Control Lists
acpi_listen (8) - ACPI event listener
add-apt-repository (1) - Adds a repository into the /etc/apt/sources.list or /etc/apt/sources.list.d or removes an existing one
add-shell (8) - add shells to the list of valid login shells
...
xlsatoms (1) - list interned atoms defined on server
xlsclients (1) - list client applications running on a display
xlsfonts (1) - server font list displayer for X
XML::XPathEngine::NodeSet (3pm) - a list of XML document nodes
zipinfo (1) - list detailed information about a ZIP archive
oleg@mobile:~$
Команда apropos
также показала следующие совпадения, например listener
или lists
.
Поиск по двум ключевым словам
Для сужения совпадений добавляем ещё одну переменную directory
, указывающую на каталоги. Для включения в вывод обоих ключевых слов запускаем команду с опцией -a
:
oleg@mobile:~$ apropos -a list directory
chacl (1) - change the access control list of a file or directory
dir (1) - list directory contents
File::Listing (3pm) - parse directory listing
ls (1) - list directory contents
ntfsls (8) - list directory contents on an NTFS filesystem
vdir (1) - list directory contents
oleg@mobile:~$
Аналогичного результата можно достигнуть без использования опции -a
, заключив ключевые слова в двойные кавычки:
oleg@mobile:~$ apropos "list directory"
dir (1) - list directory contents
ls (1) - list directory contents
ntfsls (8) - list directory contents on an NTFS filesystem
vdir (1) - list directory contents
oleg@mobile:~$
Двойные кавычки указывают утилите, что поиск должен дать точное совпадение в том же порядке, что и ключевые слова в кавычках.
Поиск любого из двух параметров
Несмотря на то, что опция -a
действует как логическое И, работа команды apropos
с несколькими условиями поиска без аргументов действует как логическое ИЛИ:
oleg@mobile:~$ apropos -a list directory
chacl (1) - change the access control list of a file or directory
dir (1) - list directory contents
File::Listing (3pm) - parse directory listing
ls (1) - list directory contents
ntfsls (8) - list directory contents on an NTFS filesystem
vdir (1) - list directory contents
oleg@mobile:~$
Поиск точного совпадения
Для того чтобы в результатах поиска отсутствовали слова, включающие поисковое слово, команда apropos
запускается с опцией -e
:
oleg@mobile:~$ apropos -e set
apparmor (7) - kernel enhancement to confine programs to a limited set of resources.
apt-mark (8) - show, set and unset various settings for a package
armscii-8 (7) - Armenian character set encoded in octal, decimal, and hexadecimal
ascii (7) - ASCII character set encoded in octal, decimal, and hexadecimal
bind_textdomain_codeset (3) - set encoding of message translations
bindtextdomain (3) - set directory containing message catalogs
...
zramctl (8) - set up and control zram devices
oleg@mobile:~$
Поиск по конкретным разделам
Разделы руководства:
oleg@mobile:~$ man man
MAN(1) Утилиты просмотра справочных страниц MAN(1)
НАЗВАНИЕ
man - доступ к системным справочным страницам
СИНТАКСИС
man [параметры man] [[раздел] страница ...] ...
man -k [параметры apropos] регвыр ...
man -K [параметры man] [раздел] термин ...
man -f [whatis параметры] страница ...
man -l [параметры man] файл ...
man -w|-W [параметры man] страница ...
ОПИСАНИЕ
man — это пейджер справочных страниц системы. Каждый параметр страница, переданный man, обычно является названием
программы, утилиты или функции. По каждому из этих параметров выполняется поиск и вывод связанной с ним справочной
страницы. Если указан параметр раздел, то это заставляет man выполнять поиск только в этом справочном разделе. Действием
по умолчанию является поиск во всех доступных разделах в заранее определённом порядке (смотрите DEFAULTS) и показ только
первой найденной страницы, даже если существуют страницы в нескольких разделах.
В таблице ниже показаны номера справочных разделов и описание их содержимого.
1 Исполняемые программы или команды оболочки (shell)
2 Системные вызовы (функции, предоставляемые ядром)
3 Библиотечные вызовы (функции, предоставляемые программными библиотеками)
4 Специальные файлы (обычно находящиеся в каталоге /dev)
5 Форматы файлов и соглашения, например о /etc/passwd
6 Игры
7 Разное (включает пакеты макросов и соглашения), например man(7), groff(7)
8 Команды администрирования системы (обычно, запускаемые только суперпользователем)
9 Процедуры ядра [нестандартный раздел]
Справочная страница состоит из нескольких разделов.
Стандартные имена разделов: НАЗВАНИЕ (NAME), СИНТАКСИС (SYNOPSIS), НАСТРОЙКИ (CONFIGURATION), ОПИСАНИЕ (DESCRIPTION),
ПАРАМЕТРЫ (OPTIONS), КОД ВЫХОДА (EXIT STATUS), ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ (RETURN VALUE), ОШИБКИ (ERRORS), ОКРУЖЕНИЕ
Manual page man(1) line 1 (press h for help or q to quit)
Для указания раздела руководства для поиска команда apropos
включает опцию -s
, а затем номер(а) раздела:
oleg@mobile:~$ apropos -s 1,8 list
...
poff (1) - starts up, shuts down or lists the log of PPP connections
pon (1) - starts up, shuts down or lists the log of PPP connections
popcon-largest-unused (8) - List size of unused packages
popularity-contest (8) - list the most popular Debian packages
...
xlsatoms (1) - list interned atoms defined on server
xlsclients (1) - list client applications running on a display
xlsfonts (1) - server font list displayer for X
zipinfo (1) - list detailed information about a ZIP archive
oleg@mobile:~$
В данном случае были выведены списки разделов 1
и 8
.
Запрет обрезки
По умолчанию команда apropos
обрезает длинные строки в выводе:
oleg@mobile:~$ apropos list
...
git-branch (1) - List, create, or delete branches
git-ls-remote (1) - List references in a remote repository
git-ls-tree (1) - List the contents of a tree object
git-replace (1) - Create, list, delete refs to replace objects
git-rev-list (1) - Lists commit objects in reverse chronological order
git-show-ref (1) - List references in a local repository
git-sparse-checkout (1) - Initialize and modify the sparse-checkout configuration, which reduces the checkout to a set of paths ...
git-tag (1) - Create, list, delete or verify a tag object signed with GPG
...
Во избежание обрезки строк утилиту следует запускать с опцией -l
:
oleg@mobile:~$ apropos -l list
...
git-branch (1) - List, create, or delete branches
git-ls-remote (1) - List references in a remote repository
git-ls-tree (1) - List the contents of a tree object
git-replace (1) - Create, list, delete refs to replace objects
git-rev-list (1) - Lists commit objects in reverse chronological order
git-show-ref (1) - List references in a local repository
git-sparse-checkout (1) - Initialize and modify the sparse-checkout configuration, which reduces the checkout to a set of paths given by a list of patterns.
git-tag (1) - Create, list, delete or verify a tag object signed with GPG
...
Заключение
В этой статье вы ознакомились с использованием в Linux команды apropos
. Умение пользоваться ей весьма актуально для начинающих пользователей.