Я хочу найти все страницы руководства для команд, начинающихся с wh
. Но я не понимаю, почему следующее ключевое слово не работает.
man -f "wh"
Также, если я поставлю
man chmod
на странице руководства chmod
есть слово "символический", поэтому я ставлю
man -f "symbolic"
но chmod
команда не отображается в результатах.
Короче говоря, как мне найти/искать команды или описание команды по содержимому внутри слова? Я знаю, как найти определенные слова после того, как я получу страницу руководства, используя /
символ, но я хочу найти все страницы руководства с искомым словом.
решение1
Вы можете использовать -k
переключатель, чтобы найти все страницы руководства, которые содержат wh
в своем имени или кратком описании. Затем просто выполните grep для тех, которые начинаются с wh
. Команда apropos
эквивалентна man -k
.
Пример
$ man -k wh | grep "^wh"
what (1p) - identify SCCS files (DEVELOPMENT)
whatis (1) - display manual page descriptions
whereis (1) - locate the binary, source, and manual page files for a command
which (1) - shows the full path of (shell) commands.
while (n) - Execute script repeatedly as long as a condition is met
whiptail (1) - display dialog boxes from shell scripts
whirlwindwarp (6x) - crazy moving stars
whline (3x) - create curses borders, horizontal and vertical lines
whline_set (3x) - create curses borders or lines using complex characters and renditions
who (1) - show who is logged on
who (1p) - display who is on the system
whoami (1) - print effective userid
whois (1) - client for the whois service
Поиск по страницам руководства
Если вы настроены на поиск по страницам руководства, используя полнотекстовый поиск, вы можете использовать переключатель -K
. Это заглавная буква K.
Пример
$ man -w -K symbolic | head -10
/usr/local/share/man/man1/mimeopen.1
/usr/local/share/man/man1/mimetype.1
/usr/local/share/man/man1/ptksh.1
/usr/share/man/man1/as.1.gz
/usr/share/man/man1/atop.1.gz
/usr/share/man/man1/atopsar.1.gz
/usr/share/man/man1/attr.1.gz
/usr/share/man/man1/autoreconf.1.gz
/usr/share/man/man1/bakefilize.1.gz
/usr/share/man/man1/bash.1.gz
Этот метод не дает вам ни имени страницы руководства, ни краткого описания. Он показывает только фактическое имя файла, в котором хранится страница руководства, которое обычно является именем команды.
решение2
man -f wh
(синоним whatis
) отображает краткое (однострочное) описание команды wh
. Флаг -f
указывает man
отображать только первую строку, а не всю страницу. Это не то, что вам нужно.
Команда apropos wh
(синоним man -k wh
) выводит список страниц руководства, краткое описание которых содержит строку wh
. Если вы хотите объединить поиск в кратком описании с шаблоном в имени команды, вы можете отфильтровать результаты с apropos
помощью grep
. Чтобы ограничиться пользовательскими командами (т. е. разделом 1) и не отображать команды администратора, функции библиотеки C и т. д., передайте -S 1
. Если вам нужны как пользовательские, так и административные команды, передайте -S 1:8
.
apropos symbolic | grep '^wh'
Для поиска по целым страницам man с помощью mandb (наиболее распространенная man
реализация в Linux) используйте -K
(заглавные K
, а не строчные k
для apropos
). Это может занять очень много времени, если у вас установлено много страниц man; рассмотрите возможность передачи параметра, --regex
чтобы ограничить поиск страницами man, однострочное описание которых соответствует регулярному выражению.
man -K -S 1:8 --regex 'change.*file' symbolic
решение3
man -k '^symbolic$'
Это выведет название приложения и номер страницы, на которой находится слово symbolic. Избавьтесь от $, если хотите что-то, что начинается с symbolic.