7.8. Поиск нужной документации

Описание:  Системы BSD хорошо документированы. Существует множество доступных администратору ресурсов. Кандидат должен уметь воспользоваться локальной документацийе, а так же знать о документации доступной в сети Internet.

Практика: apropos(1), man(1), man.conf(5), whatis(1), и info(1); share/doc и share/examples; в добавок, каждый проект BSD имеет on-line документацию и несколько почтовых списков рассылки.

Комментарий

7.8.1. Справочная система man(1)

Справочная система UNIX основана на так называемых страницах man(1). Для получения справки по какой-нибудь команде или файлу, надо отдать команду

$ man cp
  

В результате вызова этой команды вы получите справку по команде cp(1). В данном руководстве, а так же во множестве иных мест, вы можете увидеть возле команд и имён конфигурационных файлов в круглых скобках некоторое число. Это номер «страницы» man(1). Для того, чтобы вызвать именно эту страницу, её номер надо указать между командой man(1) и обязательным аргументом. Если же номер не указан, то выводится справка о самой первой странице. Например: существует две справочные страницы с именем passwd: первая и пятая. Первая рассказывает о команде passwd(1), а пятая о синтаксисе файла /etc/passwd(5). Эти страницы можно прочитать, используя следующие две команды:

$ man passwd
$ man 5 passwd
  

Первая команда покажет первую страницу, так как по умолчанию будет выбран самый младший номер, а вторая — пятую, так как номер указан явно. Смысл этих номеров описан в следующем разделе: Раздел 7.9, «Понимание различий в страницах man».

В операционных системах OpenBSD и NetBSD существует конфигурационный файл man.conf(5), в котором описано как должны называться справочные страницы и где их искать. В FreeBSD и DragonFly BSD следует обратить внимание на файл login.conf(5) (см. Таблица F.2, «Формирование окружения средствами login.conf(5)»).

Страница man записана в некотором малопригодном для чтения виде, перед выводом на экран она обрабатывается утилитой groff(1) и выводится пользователю при помощи постраничного пейджера more(1). Нынешний more(1), уже не тот что прежде. Он умеет искать текст и листает как вперёд, так и назад. Однако, если вам больше нравится less(1) (как известно, less(1) is more than more(1)), то вы можете для этого переопределить переменную окружения PAGER:

$ PAGER=less; export PAGER
  

Лично меня, например, раздражает, что more(1), долистав справку до конца прекращает работу, таким образом, если вам, по несчастью, показали последнюю строку справки, то чтобы посмотреть потом на её начало, вам надо перезапускать man(1). Хотя в середине файла вам спокойно дают листать в обоих направлениях.

Команда man(1) хороша, но она предполагает, что вы знаете, что вы ищете. А как быть, если вы, допустим, не знаете какая команда отвечает за копирование файлов? Для этого есть команда apropos(1):

$ apropos copy | fgrep '(1)'
cp(1)   - copy files
cpio(1)   - copy files to and from archives
dd(1)   - convert and copy a file
objcopy(1)  - copy and translate object files
pax(1)   - read and write file archives and copy directory hierarchies
rcp(1)   - remote file copy
scp(1)   - secure copy (remote file copy program)
tcopy(1)   - copy and/or verify mag tapes
dvicopy(1)  - produce modified copy of DVI file
neon-config(1) - script providing information about installed copy of neon library
tiffcp(1)  - copy (and possibly convert) a TIFF file
  

Как видим, в представленном списке можно разобраться и понять, что нам надо. Краткую справку вроде показанной, можно получить и при помощи команды whatis(1):

$ whatis cp
cp(1)     - copy files
$ whatis gcc
gcc(1), g++(1)   - GNU project C and C++ Compiler (gcc-3.2.1)
gccmakedep(1)   - create dependencies in makefiles using 'gcc -M'
  

Обе команды ищут в одной базе данных, только whatis(1) ищет среди имён команд, а apropos(1) среди описаний. Эта база данных строится при помощи команды makewhatis(1) раз в неделю при помощи демона cron. (См. Раздел 7.17.2, «Каталоги с периодически выполняемыми заданиями во FreeBSD»)

7.8.2. Гипертекстовая справка info(1)

Существуют страницы man(1) настолько обширные, что пользоваться ими становится неудобно. В таких случаях на выручку приходит система info(1). При прочих равных страницы info(1) как правило более подробны, однако основное их преимущество — наличие гипертекстовой навигации. Эта система написана на основе текстового редактора emacs(1).

$ info gcc
File: gcc.info, Node: Top, Next: G++ and GCC, Up: (DIR)

Introduction
************

This manual documents how to use the GNU compilers, as well as their
features and incompatibilities, and how to report bugs. It corresponds
to GCC version 3.3.3. The internals of the GNU compilers, including
how to port them to new targets and some information about how to write
front ends for new languages, are documented in a separate manual.
*Note Introduction: (gccint)Top.

* Menu:

* G++ and GCC::  You can compile C or C++ programs.
* Standards::  Language standards supported by GCC.
* Invoking GCC:: Command options supported by `gcc'.
* C Implementation:: How GCC implements the ISO C specification.
* C Extensions:: GNU extensions to the C language family.
* C++ Extensions:: GNU extensions to the C++ language.
* Objective-C::  GNU Objective-C runtime features.
* Compatibility:: Binary Compatibility
--zz-Info: (gcc.info.gz)Top, 39 lines --Top----*** Tags out of Date ***---------
Welcome to Info version 4.6. Type ? for help, m for menu item.
  

Итак, мы попали в справку о gcc(1). Теперь, если мы поместим курсор на строку с гипертекстовой ссылкой (гипертекстовые ссылки находятся между * и ::) и нажмём клавишу <Enter>, то мы попадём на соответствующую страницу. Вопросительный знак выводит справку по навигации в info(1), а выход из системы осуществляется при нажатии клавиши q. Выход из справки клавиша l, а не q, потому что q вообще закроет emacs(1)!

Таблица 7.10. Навигационные клавиши в системе info(1)

КлавишаОписание
nСледующая нода
pПредыдущая нода
uНа уровень выше
m Перейти к некоторому пункту меню. Будет вызвана командная строка в которой можно будет ввести имя интересующей ноды из меню. При этом можно пользоваться клавишей <TAB>. В случае, если подходит несколько вариантов, они все будут показаны.
rПройти по перекрёстной ссылке (имя будет спрошено).
lВыйти из данной ноды назад, где были до неё
t Выйти на самый верхний уровень (где перечислены все страницы info(1) установленные в системе).
<TAB>Переместиться в тексте к следующей ссылке
M-<TAB> Переместиться в тексте к предыдущей ссылке. Необходимо пояснение: имеется ввиду клавиша «мета». На большинстве клавиатур речь идёт о сочетании клавиш <Alt>+<TAB>. В тоже время, многие оболочки, в том числе многие window-менеджеры системы X(1), перехватывают сочетание клавиш <Alt>+<TAB> для своих целей, например для переключения окон. Чтобы эта функция не мешала, нажатие на клавишу «мета» можно заменить нажатием на <ESC>. Т.е. везде, где в emacs(1) требуют ОДНОВРЕМЕННО нажать «мета» и что-то, можно вместо этого ПОСЛЕДОВАТЕЛЬНО нажать сперва <ESC>, потом что-то.
<ENTER>Перейти на ноду под курсором
Перемещения на странице
<Home> <End>Перейти в начало или в конец ноды
<Space> <Del>Страница вперёд или назад
Прочее
iИндекс
g перейти на ноду по имени (можно указать имя файла)
sПоиск текста внутри ноды
Всего несколько сот(!) клавишесочетаний

К стыду своему, я не понимаю как сказать по-русски слово «нода». Имеется ввиду тема, про которую рассказано в info(1). Вся система организована, как дерево «нод».

7.8.3. Прочие источники

В каталогах share/doc и share/examples можно найти дополнительную документацию в форматах txt или html, а так же примеры конфигурационных файлов с комментариями. Там действительно много полезной справочной информации, авторам которой просто не хватило времени и желания на то, чтобы оформить их в каком-то другом виде.

В разделе Раздел 3, «Источники информации» перечислены ссылки на интерактивную справочную информацию. Для русскоязычных пользователей хочется особо отметить прекрасный перевод Handbook по FreeBSD. На курсах, которые я читаю по операционной системе Linux, я рекомендую слушателям заглядывать в этот источник, хотя он и не нацелен непосредственно на пользователей Linux.


Обновлено: 12.03.2015