Поиск по сайту:

Учебник по командам whatis в Linux для начинающих (5 примеров)


На этой странице

  1. Команда whatis для Linux
  2. Q1. Как использовать команду whatis?
  3. Вопрос 2. Как получить информацию для более чем одной команды?
  4. Вопрос 3. Можем ли мы использовать подстановочные знаки с whatis?
  5. Q4. Как заставить whatis выдавать отладочную информацию?
  6. В5. Как whatis выполняет поиск?
  7. Заключение

Man-страницы — один из самых полезных ресурсов, когда дело доходит до понимания утилит командной строки. Однако справочная страница содержит много подробностей о команде. Могут быть моменты, когда вы хотите быстро узнать - может быть в небольшой строке или около того - что делает инструмент командной строки. Что ж, вы будете рады узнать, что существует команда, специально созданная для этой цели.

В этом уроке мы обсудим основы команды whatis, используя несколько простых для понимания примеров. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на компьютере с Ubuntu 18.04 LTS и Debian 10.

Linux команда whatis

Команда whatis в Linux позволяет отображать однострочные описания справочных страниц. Ниже приведен его синтаксис:

whatis  [-dlv?V]  [-r|-w]  [-s  list]  [-m  system[,...]] [-M path] [-L
       locale] [-C file] name ...

И вот как это объясняет справочная страница инструментов:

       Each manual page has a short description available within  it.   whatis
       searches  the  manual  page names and displays the manual page descrip?
       tions of any name matched.

       name may contain wildcards (-w) or be a regular expression (-r).  Using
       these  options, it may be necessary to quote the name or escape (\) the
       special characters to stop the shell from interpreting them.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда whatis.

Q1. Как использовать команду whatis?

Базовое использование довольно простое. Просто передайте имя инструмента в качестве входных данных, и whatis выполнит поиск и отобразит для него однострочное описание.

Вот пример:

whatis ls

Вышеупомянутая команда произвела следующий вывод:

ls (1)               - list directory contents

Q2. Как получить информацию для более чем одной команды?

Это также довольно просто — просто передайте имена инструментов в качестве входных данных в 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

Итак, вы можете видеть, что команда whatis легко обрабатывает несколько входных данных.

Q3. Можем ли мы использовать подстановочные знаки с whatis?

Да, можно использовать подстановочные знаки с командой whatis. Параметр командной строки -w включает эту функцию.

Вот пример;

whatis -w 'who*'

И следующий вывод:

who (1)              - show who is logged on
whoami (1)           - print effective userid

Q4. Как заставить 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

Q5. Как 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.

Заключение

Если вы слишком увлечены инструментами командной строки Linux или ваша повседневная работа связана с справочными страницами, команда whatis может оказаться для вас полезным инструментом. Мы уже обсуждали здесь некоторые параметры командной строки whatis. Для получения дополнительной информации перейдите на справочную страницу инструментов.