Страницы man являются одним из самых полезных ресурсов, когда дело доходит до понимания утилит командной строки.
Однако на странице руководства содержится много информации о команде.
Могут быть моменты, когда вы хотите быстро узнать – может быть в небольшой строке или около того – что делает инструмент командной строки.
Хорошо, вы будете рады узнать, что существует команда, специально построенная для этой цели.
В этом уроке мы обсудим основы команды whatis, используя несколько простых для понимания примеров.
Но прежде чем мы это сделаем, стоит упомянуть, что все примеры здесь были протестированы на машине Ubuntu 18.04 LTS.
Команда Linux whatis
Ниже приведены некоторые примеры в стиле Вопрос & Ответ, которые должны дать вам представление о том, как работает команда whatis.
Вопрос 1. Как использовать команду whatis?
Основное использование довольно просто.
Просто введите имя инструмента в качестве ввода, и whatis будет искать и отображать для него однострочное описание.
Вот пример:
# whatis ls ls (1) - list directory contents
Вопрос 2. Как получить информацию для нескольких команд?
Это также довольно просто – просто передайте имена инструментов в качестве входных данных whatis. Ниже приведен пример:
# whatis ls cp rm mv ls (1) - list directory contents cp (1) - copy files and directories rm (1) - remove files or directories mv (1) - move (rename) files
Вопрос 3. Можем ли мы использовать подстановочные знаки с whatis?
Да, с помощью команды whatis можно использовать подстановочные знаки.
Параметр командной строки -w включает эту функцию.
Вот пример;
whatis -w 'who*' who (1) - show who is logged on whoami (1) - print effective userid
Вопрос 4. Как использовать whatis для создания отладочной информации?
Опция -d позволяет команде whatis выводить отладочную информацию на выходе.
Излишне говорить, что этот вариант в основном предназначен для разработчиков.
Вот пример:
whatis -d ls
From the config file /etc/manpath.config: Mandatory mandir `/usr/man'. Mandatory mandir `/usr/share/man'. Mandatory mandir `/usr/local/share/man'. Path `/bin' mapped to mandir `/usr/share/man'. Path `/usr/bin' mapped to mandir `/usr/share/man'. Path `/sbin' mapped to mandir `/usr/share/man'. Path `/usr/sbin' mapped to mandir `/usr/share/man'. Path `/usr/local/bin' mapped to mandir `/usr/local/man'. Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'. Path `/usr/local/sbin' mapped to mandir `/usr/local/man'. Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'. Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'. Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'. Path `/usr/games' mapped to mandir `/usr/share/man'. Path `/opt/bin' mapped to mandir `/opt/man'. Path `/opt/sbin' mapped to mandir `/opt/man'. Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'. Global mandir `/usr/share/man', catdir `/var/cache/man'. Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'. Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'. Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'. Global mandir `/opt/man', catdir `/var/cache/man/opt'. Added section `1'. Added section `n'. Added section `l'. Added section `8'. Added section `3'. Added section `2'. Added section `3posix'. Added section `3pm'. Added section `3perl'. Added section `3am'. Added section `5'. Added section `4'. Added section `9'. Added section `6'. Added section `7'. `/usr/man' `' `1' `/usr/share/man' `' `1' `/usr/local/share/man' `' `1' `/bin' `/usr/share/man' `0' `/usr/bin' `/usr/share/man' `0' `/sbin' `/usr/share/man' `0' `/usr/sbin' `/usr/share/man' `0' `/usr/local/bin' `/usr/local/man' `0' `/usr/local/bin' `/usr/local/share/man' `0' `/usr/local/sbin' `/usr/local/man' `0' `/usr/local/sbin' `/usr/local/share/man' `0' `/usr/X11R6/bin' `/usr/X11R6/man' `0' `/usr/bin/X11' `/usr/X11R6/man' `0' `/usr/games' `/usr/share/man' `0' `/opt/bin' `/opt/man' `0' `/opt/sbin' `/opt/man' `0' `/usr/man' `/var/cache/man/fsstnd' `-1' `/usr/share/man' `/var/cache/man' `-1' `/usr/local/man' `/var/cache/man/oldlocal' `-1' `/usr/local/share/man' `/var/cache/man/local' `-1' `/usr/X11R6/man' `/var/cache/man/X11R6' `-1' `/opt/man' `/var/cache/man/opt' `-1' `1' `' `-5' `n' `' `-5' `l' `' `-5' `8' `' `-5' `3' `' `-5' `2' `' `-5' `3posix' `' `-5' `3pm' `' `-5' `3perl' `' `-5' `3am' `' `-5' `5' `' `-5' `4' `' `-5' `9' `' `-5' `6' `' `-5' `7' `' `-5' path directory /usr/local/sbin is in the config file adding /usr/local/man to manpath adding /usr/local/share/man to manpath path directory /usr/local/bin is in the config file /usr/local/man is already in the manpath /usr/local/share/man is already in the manpath path directory /usr/sbin is in the config file adding /usr/share/man to manpath path directory /usr/bin is in the config file /usr/share/man is already in the manpath path directory /sbin is in the config file /usr/share/man is already in the manpath path directory /bin is in the config file /usr/share/man is already in the manpath path directory /usr/games is in the config file /usr/share/man is already in the manpath path directory /usr/local/games is not in the config file but does have a ../man, man, ../share/man, or share/man subdirectory /usr/local/man is already in the manpath path directory /snap/bin is not in the config file and doesn't have ../man, man, ../share/man, or share/man subdirectories adding mandatory man directories warning: /usr/man: No such file or directory /usr/share/man is already in the manpath /usr/local/share/man is already in the manpath add_nls_manpaths(): processing /usr/local/man:/usr/local/share/man:/usr/share/man checking for locale en_IN adding /usr/local/man to manpathlist adding /usr/local/share/man to manpathlist adding /usr/share/man to manpathlist adding /usr/local/man to manpathlist adding /usr/local/share/man to manpathlist adding /usr/share/man to manpathlist Removing duplicate manpath entry /usr/local/share/man (1) -> /usr/local/man (0) Removing duplicate manpath entry /usr/local/man (2) -> /usr/local/man (0) Removing duplicate manpath entry /usr/local/share/man (2) -> /usr/local/man (0) Removing duplicate manpath entry /usr/share/man (2) -> /usr/share/man (1) final search path = /usr/local/man:/usr/share/man path=/usr/local/man warning: can't read the fallback whatis text database /usr/local/man/whatis path=/usr/share/man name: ls sec. ext: 1 section: 1 comp. ext: gz id: A mtime: 1516268629.000000000 pointer: - filter: - whatis: list directory contents ls (1) - list directory contents hashtable_free: 1 entries, 1 (100%) unique
Вопрос 5. Как whatis выполняет поиск?
Вот соответствующий отрывок из справочной страницы:
index databases are used during the search, and are updated by the mandb program. Depending on your installation, this may be run by a periodic cron job, or may need to be run manually after new manual pages have been installed. To produce an old style text whatis data? base from the relative index database, issue the command: whatis -M manpath -w '*' | sort > manpath/whatis where manpath is a manual page hierarchy such as /usr/man.