Модуль 5. Работа со справочными системами

Введение

Из этого модуля мы узнаем о том, какие справочные системы есть в Linux и как ими эффективно пользоваться, чтобы не приходилось мучительно вспоминать то, что не знал, а потом еще и забыл.

Справочные системы Linux

В Linux тот, кто просит помощи, всегда ее получает, и для этого даже не обязательно иметь выход в Интернет — достаточно воспользоваться встроенной справкой, чтобы получить всю необходимую информацию о любой команде системы: ее описание, синтаксис, входные и выходные данные, настройки и примеры использования.

Основных справочных систем в Linux две:

  • manpages — появилась еще на заре создания Unix и до сих пор остается стандартом де-факто для всех *nix-подобных систем;

  • info — справочная система на гиперссылках от проекта GNU.

В дополнение к ним есть еще help — справочник по встроенным командам оболочки Bash и собственная справка Astra Linux по работе с графическим интерфейсом, но об этом позже.

Следует отметить, что в Astra Linux многие справочные страницы переведены на русский язык и существенно доработаны, в них уточнены важные моменты и добавлены полезные примеры. Далее мы рассмотрим каждую из упомянутых справочных систем и несколько команд, которые очень помогают в работе с ними.

Справочник по встроенным командам оболочки Bash

Знакомство начнем со справки по встроенным командам оболочки Bash. Если в терминале мы введем команду help, то увидим список внутренних команд Bash (см. рис. 19). В Windows cmd есть похожая справка, но в Linux она намного полнее.

../_images/alse_mod5_image4.png

рис. 19 Список внутренних команд Bash

Можно обратить внимание, что в первом же параграфе есть указание на другие справочные системы, доступ к которым можно получить с помощью утилит man и info.

Введем команду help help, чтобы получить через утилиту help справку о самой себе, см. рис. 20:

../_images/alse_mod5_image5.png

рис. 20 Справка по команде help

Как видите, ключей у команды help всего три, см. рис. 21:

  • -d — выводит короткое описание команды;

  • -m — выводит справку в псевдо-manpage формате;

  • -s — выводит список ключей в кратком формате без их описания.

../_images/alse_mod5_image6.png

рис. 21 Вывод информации по ключам команды help

Можем посмотреть справку на команду help enable, с помощью которой мы отключали встроенную команду enable -n echo. Как вы помните, после этого оболочка переключается на использование одноименной утилиты, которая работает схожим образом. Чтобы включить echo обратно, команду enable нужно вызвать без ключа enable echo, а вызов команды вообще без параметров отобразит полный список всех активных команд оболочки.

Справочные страницы системы manpages

Уже через пару лет после выхода Unix в ней появились первые справочные страницы, хотя формат их в корне отличался от современной справки. Срочно нужна была справочная система, которая позволила бы динамически обновлять свое содержимое и выполнять по нему централизованный поиск. Такой системой стала manpages, название которой образовано от двух слов manual pages, то есть «страницы документации».

В системе manpages содержится справка по отдельным командам, специальным файлам устройств, конфигурационным файлам, системным и библиотечным вызовам и другим аспектам работы системы, которые представлены обычно в восьми типовых разделах.

Расположение справочных страниц

В современной версии manpages справочные страницы написаны на языке разметки nroff и представляют собой файлы, сжатые gzip. Справочные страницы на английском языке хранятся в каталогах /usr/share/man/man<N>, где <N> – номер раздела справки. Локализованные страницы находятся в каталогах /usr/share/man/<locale>/man<N>, где <locale> – код языка. Например, полный путь до сжатого файла со страницей справки о самой утилите man можно узнать с помощью команды man -w man:

localadmin@astra:~$ man -w man
/usr/share/man/ru/man1/man.1.gz

Просмотр справочных страниц

Страницы manpages мы можем просматривать с помощью приложения man (входит в пакет man-db), которое использует несколько вспомогательных утилит. Сначала утилита man выполняет поиск запрашиваемой страницы, затем она распаковывает соответствующий файл при помощи gzip, форматирует текст в разметке roff или groff с помощью процессора troff и, наконец, выводит результат в окно терминала с помощью утилиты less.

Процессор troff позволяет адаптировать текст под любую ширину экрана и выполнять подсветку синтаксиса, используя так называемые управляющие последовательности терминала. Утилита less позволяет листать длинные страницы справки и выполнять поиск по тексту.

Навигация по справочной странице

Рассмотрим возможности утилиты less в части навигации по странице. Введем в терминале команду man man, чтобы вызвать справку о самой команде man, см. рис. 22:

localadmin@astra:~$ man man
../_images/alse_mod5_image7.png

рис. 22 Открытый просмотр less справочной страницы о команде man

Перед нами страница справки об утилите man из первого раздела документации, на что указывает метка MAN(1) в левом верхнем углу страницы. Просмотр страницы, как упоминалось ранее, осуществляется с помощью утилиты less (с англ. меньше), которая позволяет «прокручивать» текст вверх/вниз и выполнять поиск.

Рассмотрим несколько приемов работы с программой less:

  • Построчное перемещение:

    • Вниз — колесо мыши вниз, клавиши <стрелка вниз>, Enter.

    • Вверх — колесо мыши вверх, клавиша <стрелка вверх>.

  • Постраничное перемещение:

    • Вниз — клавиши <пробел>, PgDown.

    • Вверх — клавиша PgUp.

  • Переход в начало страницы — клавиша Home.

  • Переход в конец страницы — клавиша End.

  • Подробная справка по командам — клавиша h.

  • Выход — клавиша q.

Для детального изучения справочной страницы man(1) потребуется слишком много времени, поэтому остановимся только на самых важных моментах и основных приемах работы.

Примечание

Во многих инструкциях вы будете сталкиваться с отсылками на справочные страницы в формате login(1) или login(5), где цифры в скобках указывают на раздел документации, в котором следует искать необходимую информацию. Утилита login, конечно же, остается прежней, но вот информация о ней в этих разделах может существенно различаться как по глубине, так и по тематической направленности.

Разделы справочных страниц

В manpages используют восемь основных и один нестандартный раздел справочных страниц:

  1. Основные команды (General commands).

  2. Системные вызовы (System calls).

  3. Функции библиотек (Library functions).

  4. Специальные файлы (Special files), например, устройства из /dev.

  5. Форматы файлов и соглашения (File formats and conventions), например, passwd, cron table.

  6. Игры (Games).

  7. Разное (Miscellaneous).

  8. Команды администрирования системы (System administration).

  9. Процедуры ядра (Kernel Routines) [нестандартный раздел].

Для каждого раздела справки есть заголовочная страница intro, описывающая его назначение.

Для просмотра этой страницы необходимо ввести команду man <N> intro, где <N> – указывает желаемый раздел справки (см. выше /usr/share/man/man<N>).

Например, чтобы вывести заголовочную страницу для первого раздела, нужно ввести команду, см. рис. 23:

localadmin@astra:~$ man intro
../_images/alse_mod5_image8.png

рис. 23 Intro страница раздела справки по команде man

Для вывода справки по четвертому разделу необходимо использовать команду:

localadmin@astra:~$ man 4 intro
../_images/alse_mod5_image9.png

рис. 24 Введение в специальные файлы раздел 4

В справке на утилиту man указан порядок поиска информации по разделам (1 n l 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7), что следует учитывать, вызывая утилиту без указания конкретного раздела.

Структура справочных страниц

При составлении справочных страниц стараются придерживаться общих правил, поэтому большинство страниц содержит следующие секции:

  • Название (Name) — наименование команды, о которой рассказывается на этой справочной странице.

  • Синопсис (Synopsis) — краткое описание команды и ее синтаксиса.

  • Конфигурация (Configuration) — эта секция присутствует на страницах о специальных файлах (4), так как описывает конфигурацию устройств.

  • Описание (Description) — описание основного назначения программы.

  • Опции (Ключи) — опции, которые принимает команда.

  • Примеры (Examples) — один и более примеров использования команды.

  • Авторы (Authors) — информация о разработчиках, кто участвовал в создании утилиты и занимается ее дальнейшим развитием.

Использование утилиты man и связанных c ней утилит apropos, whatis, mandb

Просмотр справочных страниц по командам, конфигурационным файлам, службам

Для получения справочной информации по конкретной команде необходимо вызвать man <команда>, например, man whereis:

../_images/alse_mod5_image10.png

рис. 25 Справочные страницы по команде whereis

Справочные страницы есть в том числе для большинства утилит и конфигурационных файлов системы, поэтому вы можете подставить вместо наименования команды относительный или полный путь к конфигурационному файлу, например, man hosts:

../_images/alse_mod5_image11.png

рис. 26 Справочные страницы конфигурационного файла hosts

Пролистав до конца клавишей End, можно увидеть секцию «СМОТРИТЕ ТАКЖЕ», в которой описаны дополнительные ссылки на похожие темы и разделы справки, например конфигурационный файл resolv.conf описан в разделе 5

...
СМОТРИТЕ ТАКЖЕ
    hostname(1), resolver(3), host.conf(5), resolv.conf(5),
    resolver(5), hostname(7), named(8)

    Internet RFC 952

Откроем раздел 5 resolv.conf командой:

localadmin@astra:~$ man 5 resolv.conf

Точно так же вы можете получать справку на службы (которые в Linux традиционно называют демонами), например, man sysklogd:

../_images/alse_mod5_image12.png

рис. 27 Справочные страницы на службу sysklogd

Поиск справочных страниц

Без указания раздела утилита man выполняет поиск в том порядке, который определен по умолчанию. Чтобы получить информацию по конкретному разделу, вы можете указать его явно. Но как узнать, в каких разделах может быть необходимая вам информация, чтобы не перебирать их по очереди? Для этого есть команды man -f <строка поиска> и whatis <строка поиска> — они выведут на экран список справочных страниц из всех разделов, имена которых совпадают с введенной строкой, например, man -f passwd:

localadmin@astra:~$ man -f passwd
passwd (1)           - изменяет пароль пользователя
passwd (5)           - файл паролей
passwd (1ssl)        - compute password hashes

Но вы можете искать не только по заголовкам, но и по описанию страниц. Воспользуйтесь для этого командой man -k <регулярное выражение> или apropos <регулярное выражение>, например, man -k passwd:

localadmin@astra:~$ man -k passwd
chpasswd (8)         - обновляет пароли в пакетном режиме
gpasswd (1)          - управление /etc/group и /etc/gshadow
passwd (1)           - изменяет пароль пользователя
passwd (5)           - файл паролей
passwd2des (3)       - шифрование пароля RFS
update-passwd (8)    - безопасное обновление файлов /etc/passwd, /etc/shadow ...
chgpasswd (8)        - update group passwords in batch mode
exim4_passwd (5)     - Files in use by the Debian exim4 packages
exim4_passwd_client (5) - Files in use by the Debian exim4 packages
expect_mkpasswd (1)  - generate new password, optionally apply it to a user
fgetpwent_r (3)      - get passwd file entry reentrantly
getpwent_r (3)       - get passwd file entry reentrantly
grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB
openssl-passwd (1ssl) - compute password hashes
pam_localuser (8)    - require users to be listed in /etc/passwd
passwd (1ssl)        - compute password hashes
smbpasswd (5)        - The Samba encrypted password file
smbpasswd (8)        - change a user's SMB password

Индексация базы справочных страниц

Для того чтобы поиск по справке работал максимально быстро, утилиты обращаются не к файлам /usr/share/man напрямую, а к встроенной базе данных index, файлы которой размещаются в папке /var/cache/man. Содержание этой базы требуется обновлять с помощью команды mandb каждый раз после установки и обновления приложений.

localadmin@astra:~$ mandb
Обработка справочных страниц в /home/astra/.local/share/man...
Обновление индексного кэша для пути `/home/astra/.local/share/man/man1'. Ждите...завершено.
Проверка побочных cat в /home/astra/.local/share/man...
Обработка справочных страниц в /home/astra/.local/share/man/cat1...
В 1 man-подкаталоге содержатся более новые справочные страницы.
Добавлена 1 справочная страница.
Добавлено 0 побочных cat-страниц.
Вычищено 0 старых записей базы данных.

Поиск информации на справочной странице

Интерфейс утилиты less позволяет выполнять поиск по тексту справочной страницы, предлагая два способа: обычный поиск и поиск с отображением совпадающих строк.

Обычный поиск

Откроем еще раз справку man man, затем введем символ косой черты </> и наберем слово, которое мы хотим найти, например, /раздел:

../_images/alse_mod5_image13.png

Далее нажмем клавишу Enter, чтобы выполнить переход на строку, содержащую первое вхождение этого слова:

../_images/alse_mod5_image14.png

Клавишами n и N можно переходить вперед/назад по вхождениям соответственно.

Все вхождения этого слова будут выделены цветом, и, чтобы включить/отключить подсветку найденных вхождений, можно воспользоваться сочетанием клавиш Esc + U.

Для выполнения поиска в обратном направлении (если вы находитесь в конце страницы) вместо символа косой черты используйте символ вопросительного знака <?>, например, ?страница.

Поиск с отображением совпадающих строк

Для быстрого ознакомления с результатами поиска вы можете вывести все вхождения на одной странице. При использовании этого способа рекомендуется включить нумерацию строк.

Для этого введите -N команда смениться на надпись «Constantly display line numbers  (press RETURN)» и затем нажмите Enter:

../_images/alse_mod5_image15.png

В интерфейсе less появится нумерация строк.

../_images/alse_mod5_image16.png

Теперь введем <&> (символ «/» появится автоматически), наберем искомое слово whatis и нажмем клавишу Enter:

../_images/alse_mod5_image17.png

На экране отобразятся только те строки, в которых найдено это слово.

../_images/alse_mod5_image18.png

Если вас заинтересует конкретная строка, вы сможете перейти к ней по ее номеру, например 226.

Для этого сначала верните отображение всех строк командой & затем Enter:

../_images/alse_mod5_image19.png

Затем введите номер строки 226 и нажмите клавишу g, чтобы выполнить переход.

../_images/alse_mod5_image20.png

Для отключения режима нумерации строк введите команду -N и нажмите клавишу Enter.

Использование утилит поиска whereis и which

Утилита whereis позволяет найти расположение файлов на диске. Приложение выполняет поиск точно так же, как это делает оболочка командной строки, т.е. просматриваются все каталоги, перечисленные в переменной PATH. Чтобы увидеть полный список этих каталогов, вы можете вызвать команду whereis -l (строчная L):

localadmin@astra:~$ whereis -l
bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib/x86_64-linux-gnu
bin: /usr/lib

Команда whereis <имя команды> ищет все файлы, относящиеся к запрашиваемой команде:

localadmin@astra:~$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

Команда с ключом whereis -b <имя команды> ищет только двоичные файлы:

localadmin@astra:~$ whereis -b ls
ls: /usr/bin/ls

Команда с ключом whereis -m <имя команды> ищет только по документации:

localadmin@astra:~$ whereis -m ls
ls: /usr/share/man/man1/ls.1.gz

Утилита which отображает полный путь к указанным командам:

localadmin@astra:~$ which man
/usr/bin/man

По умолчанию команда выводит только первое из найденных значений, но при использовании ключа which -a man можно получить весь список:

localadmin@astra:~$ which -a man
/usr/bin/man
/bin/man

Справочные страницы системы info

Еще одной системой документации является Texinfo, которая, в отличие от man, позволяет создавать большие развернутые руководства.

Язык разметки texinfo позволяет форматировать текст, создавать ссылки, таблицы и т.д. На основе этих исходных файлов можно генерировать справочные документы в различных форматах, поэтому команды разметки имеют инструкции условного включения текста для каждого из выходных форматов.

Утилита info работает с набором предварительно сгенерированных гипертекстовых страниц из каталога /usr/share/info. Каждая страница имеет иерархическую структуру, состоящую из так называемых «нод», которые можно сравнить с разделами, подразделами, главами или секциями в книгах.

Команда info выполнит запуск справочной системы, а команда info <команда>, например, info cat, выведет справочную страницу по этой команде. Внутрь texinfo встроена справка по командам, вывести на экран ее можно нажатием клавиши <H>. Подробнее о системе вы можете узнать в справке man info.

../_images/alse_mod5_image21.png

Справка Astra Linux

В графическом интерфейсе Astra Linux доступна еще одна справочная система, открыть которую можно комбинацией клавиш Alt + F1. В этот момент запускается приложение assistant, которому на вход передается путь к файлу flyhelp.qhc:

$ assistant -collectionFile /usr/share/doc/fly/qthelp/ru/flyhelp.qhc

В этой справке достаточно подробно изложено описание графического интерфейса, утилит, настроек и программ, входящих в комплект поставки дистрибутива. Если у вас возникли вопросы по использованию рабочего стола, панели управления, менеджера устройств и других функций, вы можете обратиться к этой справочной системе.

Справка располагает интуитивно понятным интерфейсом:

  • в левой колонке есть четыре вкладки «содержание», «указатель», «закладки» и «поиск»;

../_images/alse_mod5_image22.png

рис. 28 Содержание справки

../_images/alse_mod5_image23.png

рис. 29 Вкладка указатель на разделы справки

../_images/alse_mod5_image24.png

рис. 30 Панель закладок, для сохранения страниц в закладки

../_images/alse_mod5_image25.png

рис. 31 Вкладка поиска по разделам справки

  • чуть ниже расположен список открытых страниц;

../_images/alse_mod5_image26.png

рис. 32 Справка по входу в систему

  • в правой части окна находится текст просматриваемой в данный момент страницы.

../_images/alse_mod5_image27.png

рис. 33 Справка по файловому менеджеру fly-fm

../_images/alse_mod5_image28.png

рис. 34 Справка по утилите Информация о системе

Практика и тестирование

Заключение

В этом модуле мы познакомились с несколькими типами справочных систем в Astra Linux:

  • Справка по встроенным командам оболочки bash

  • Справочные страницы

  • Справка от проекта GNU

  • Справка по работе в графическом режиме Astra Linux

Мы изучили основные принципы работы с этими системами и попробовали найти нужную информацию только с их помощью. Затем, воспользовавшись этой информацией, мы настроили одну из опций оболочки.

В следующем модуле мы познакомимся с концепцией «Все есть файл» и стандартом иерархии файловых систем (Filesystem Hierarchy Standard, FHS). Мы узнаем об особенностях устройства классических файловых систем для Linux, познакомимся с различными типами файлов и научимся работать с ними.

Дополнительные источники информации