Каждый пользователь Linux может забыть или просто не знать название какой-нибудь команды, которая выполняет то или иное действие. В этой статье я расскажу, как найти команду по ключевому слову или фразе.
Предположим, что вы не знаете или забыли название команды, которая должна выполнять какое-нибудь действие. В этом случае команду можно найти с помощью ключевого слова. Для этого существует утилита apropos. Утилита apropos выполняет поиск ключевого слова в первых строчках man-страниц и выводит те стоки, которые содержат указанное ключевое слово. В качестве ключевого слова можно также задать регулярное выражение или шаблон.
Простой поиск
Например, мы хотим найти команды, которые включают в свое описание или название слово move. Тогда мы должны выполнить команду:
apropos moveВ результате на экран будет выведен список команд и их описания, в которых было найдено слово move:
yuriy@yuriy-NIX:~$ apropos move
aa_gotoxy (3) - move the hardware cursor (if any) to specified position.
add-apt-repository (1) - Adds a repository into the /etc/apt/sources.list or ...
BIO_pop (3ssl) - add and remove BIOs from a chain.
caca_conio_movetext (3caca) - (неизвестный объект)
...
git-bundle (1) - Move objects and refs by archive
git-clean (1) - Remove untracked files from the working tree
git-mv (1) - Move or rename a file, a directory, or a symlink
...
mq_unlink (2) - remove a message queue
mv (1) - move (rename) files
...Поиск с учетом раздела
На самом деле в нем будут присутствовать не только команды, но и, например, функции языка C, так как для них тоже существуют man страницы (кстати, apropos отлично подойдет для поиска C функций). Все man-страницы разделены на разделы (apropos выводит номер раздела в скобках после названия команды). Например, в первом разделе man-страниц расположены описания команд Linux. Для того, чтобы вывести информацию только из man-страниц определенного раздела, существует опция -s, за которой указывается номер man-страницы.
Выполним поиск по ключевому слову move только в
apropos -s 1 moveyuriy@yuriy-NIX:~$ apropos -s 1 move
add-apt-repository (1) - Adds a repository into the /etc/apt/sources.list or ...
colrm (1) - remove columns from a file
cut (1) - remove sections from each line of files
dh_movefiles (1) - move files out of debian/tmp into subpackages
git-bundle (1) - Move objects and refs by archive
git-clean (1) - Remove untracked files from the working tree
git-mv (1) - Move or rename a file, a directory, or a symlink
git-prune-packed (1) - Remove extra objects that are already in pack files
git-rm (1) - Remove files from the working tree and from the index
git-stripspace (1) - Remove unnecessary whitespace
ipcrm (1) - remove a message queue, semaphore set or shared memory id
lockfile-remove (1) - command-line programs to safely lock and unlock files ...
mmove (1) - move or rename an MSDOS file or subdirectory
...Для удобства можно отсортировать результаты, воспользовавшись командой sort:
apropos -s 1 move | sortПоиск по нескольким словам
Если вы вводите несколько слов через пробел, тогда apropos найдет все команды, содержащие любое из ключевых слов. Например, мы хотим найти команды, по ключевым словам move и empty:
apropos -s 1 move empty | sortВ результате получим:
yuriy@yuriy-NIX:~$ apropos -s 1 move empty | sort
add-apt-repository (1) - Adds a repository into the /etc/apt/sources.list or ...
colrm (1) - remove columns from a file
cut (1) - remove sections from each line of files
dh_movefiles (1) - move files out of debian/tmp into subpackages
git-bundle (1) - Move objects and refs by archive
git-clean (1) - Remove untracked files from the working tree
git-init (1) - Create an empty git repository or reinitialize an exis...
git-init-db (1) - Creates an empty git repository
...Поиск точного вхождения слов
Обратите внимание, что apropos по ключевому слову move найдет и строки со словами remove. Чтобы искать точное вхождение слов используется опция -e:
apropos -s 1 -e move empty | sortТеперь мы получим только те команды, которые содержат слова move и empty:
yuriy@yuriy-NIX:~$ apropos -s 1 -e move empty | sort
dh_movefiles (1) - move files out of debian/tmp into subpackages
git-bundle (1) - Move objects and refs by archive
git-init (1) - Create an empty git repository or reinitialize an exis...
git-init-db (1) - Creates an empty git repository
git-mv (1) - Move or rename a file, a directory, or a symlink
mmove (1) - move or rename an MSDOS file or subdirectory
mv (1) - move (rename) files
rmdir (1) - remove empty directoriesПоиск по фразе
Если вы хотите выполнить поиск по какой-нибудь фразе, содержащей пробелы, тогда ее нужно заключить в кавычки:
apropos -s 1 "remove empty"Получим:
yuriy@yuriy-NIX:~$ apropos -s 1 "remove empty"
rmdir (1) - remove empty directoriesИспользование регулярных выражений
Команда apropos поддерживает поиск с использованием регулярных выражений, для этого служит опция -r:
apropos -s 1 -r "remove [f|e]" | sortyuriy@yuriy-NIX:~$ apropos -s 1 -r "remove [f|e]" | sort
git-prune-packed (1) - Remove extra objects that are already in pack files
git-rm (1) - Remove files from the working tree and from the index
pamdeinterlace (1) - remove ever other row from a PAM/PNM image
rm (1) - remove files or directories
rmdir (1) - remove empty directoriesЯ рассказал об основных возможностях утилиты apropos. Дополнительную информацию можно получить в помощи по этой команде (у меня в Ubuntu на русском языке, кстати, но к сожалению, без примеров):
man apropos
Комментарии
20:05
05:19
13:07
21:32