Модуль 5. Работа со справочными системами
Введение
Из этого модуля мы узнаем о том, какие справочные системы есть в Linux и как ими эффективно пользоваться, чтобы не приходилось мучительно вспоминать то, что не знал, а потом еще и забыл.
Справочные системы Linux
В Linux тот, кто просит помощи, всегда ее получает, и для этого даже не обязательно иметь выход в Интернет — достаточно воспользоваться встроенной справкой, чтобы получить всю необходимую информацию о любой команде системы: ее описание, синтаксис, входные и выходные данные, настройки и примеры использования.
Основных справочных систем в Linux две:
manpages — появилась еще на заре создания Unix и до сих пор остается стандартом де-факто для всех *nix-подобных систем;
info — справочная система на гиперссылках от проекта GNU.
В дополнение к ним есть еще help
— справочник по встроенным командам оболочки Bash и собственная справка Astra Linux по работе с графическим интерфейсом, но об этом позже.
Следует отметить, что в Astra Linux многие справочные страницы переведены на русский язык и существенно доработаны, в них уточнены важные моменты и добавлены полезные примеры. Далее мы рассмотрим каждую из упомянутых справочных систем и несколько команд, которые очень помогают в работе с ними.
Справочник по встроенным командам оболочки Bash
Знакомство начнем со справки по встроенным командам оболочки Bash. Если в терминале мы введем команду help
, то увидим список внутренних команд Bash (см. рис. 19). В Windows cmd есть похожая справка, но в Linux она намного полнее.
Можно обратить внимание, что в первом же параграфе есть указание на другие справочные системы, доступ к которым можно получить с помощью утилит man
и info
.
Введем команду help help
, чтобы получить через утилиту help
справку о самой себе, см. рис. 20:
Как видите, ключей у команды help
всего три, см. рис. 21:
-d
— выводит короткое описание команды;-m
— выводит справку в псевдо-manpage формате;-s
— выводит список ключей в кратком формате без их описания.
Можем посмотреть справку на команду 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
Перед нами страница справки об утилите man
из первого раздела документации, на что указывает метка MAN(1) в левом верхнем углу страницы. Просмотр страницы, как упоминалось ранее, осуществляется с помощью утилиты less
(с англ. меньше), которая позволяет «прокручивать» текст вверх/вниз и выполнять поиск.
Рассмотрим несколько приемов работы с программой less
:
Построчное перемещение:
Вниз — колесо мыши вниз, клавиши <стрелка вниз>, Enter.
Вверх — колесо мыши вверх, клавиша <стрелка вверх>.
Постраничное перемещение:
Вниз — клавиши <пробел>, PgDown.
Вверх — клавиша PgUp.
Переход в начало страницы — клавиша Home.
Переход в конец страницы — клавиша End.
Подробная справка по командам — клавиша h.
Выход — клавиша q.
Для детального изучения справочной страницы man(1) потребуется слишком много времени, поэтому остановимся только на самых важных моментах и основных приемах работы.
Примечание
Во многих инструкциях вы будете сталкиваться с отсылками на справочные страницы в формате login(1) или login(5), где цифры в скобках указывают на раздел документации, в котором следует искать необходимую информацию. Утилита login
, конечно же, остается прежней, но вот информация о ней в этих разделах может существенно различаться как по глубине, так и по тематической направленности.
Разделы справочных страниц
В manpages используют восемь основных и один нестандартный раздел справочных страниц:
Основные команды (General commands).
Системные вызовы (System calls).
Функции библиотек (Library functions).
Специальные файлы (Special files), например, устройства из
/dev
.Форматы файлов и соглашения (File formats and conventions), например, passwd, cron table.
Игры (Games).
Разное (Miscellaneous).
Команды администрирования системы (System administration).
Процедуры ядра (Kernel Routines) [нестандартный раздел].
Для каждого раздела справки есть заголовочная страница intro, описывающая его назначение.
Для просмотра этой страницы необходимо ввести команду man <N> intro
, где <N> – указывает желаемый раздел справки (см. выше /usr/share/man/man<N>
).
Например, чтобы вывести заголовочную страницу для первого раздела, нужно ввести команду, см. рис. 23:
localadmin@astra:~$ man intro
Для вывода справки по четвертому разделу необходимо использовать команду:
localadmin@astra:~$ man 4 intro
В справке на утилиту 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
:
Справочные страницы есть в том числе для большинства утилит и конфигурационных файлов системы, поэтому вы можете подставить вместо наименования команды относительный или полный путь к конфигурационному файлу, например, man 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
:
Поиск справочных страниц
Без указания раздела утилита 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
, затем введем символ косой черты </>
и наберем слово, которое мы хотим найти, например, /раздел
:
Далее нажмем клавишу Enter, чтобы выполнить переход на строку, содержащую первое вхождение этого слова:
Клавишами n и N можно переходить вперед/назад по вхождениям соответственно.
Все вхождения этого слова будут выделены цветом, и, чтобы включить/отключить подсветку найденных вхождений, можно воспользоваться сочетанием клавиш Esc + U.
Для выполнения поиска в обратном направлении (если вы находитесь в конце страницы) вместо символа косой черты используйте символ вопросительного знака <?>
, например, ?страница
.
Поиск с отображением совпадающих строк
Для быстрого ознакомления с результатами поиска вы можете вывести все вхождения на одной странице. При использовании этого способа рекомендуется включить нумерацию строк.
Для этого введите -N
команда смениться на надпись «Constantly display line numbers (press RETURN)
» и затем нажмите Enter:
В интерфейсе less появится нумерация строк.
Теперь введем <&>
(символ «/» появится автоматически), наберем искомое слово whatis и нажмем клавишу Enter:
На экране отобразятся только те строки, в которых найдено это слово.
Если вас заинтересует конкретная строка, вы сможете перейти к ней по ее номеру, например 226.
Для этого сначала верните отображение всех строк командой & затем Enter:
Затем введите номер строки 226 и нажмите клавишу g, чтобы выполнить переход.
Для отключения режима нумерации строк введите команду -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
.
Справка Astra Linux
В графическом интерфейсе Astra Linux доступна еще одна справочная система, открыть которую можно комбинацией клавиш Alt + F1. В этот момент запускается приложение assistant, которому на вход передается путь к файлу flyhelp.qhc
:
$ assistant -collectionFile /usr/share/doc/fly/qthelp/ru/flyhelp.qhc
В этой справке достаточно подробно изложено описание графического интерфейса, утилит, настроек и программ, входящих в комплект поставки дистрибутива. Если у вас возникли вопросы по использованию рабочего стола, панели управления, менеджера устройств и других функций, вы можете обратиться к этой справочной системе.
Справка располагает интуитивно понятным интерфейсом:
в левой колонке есть четыре вкладки «содержание», «указатель», «закладки» и «поиск»;
чуть ниже расположен список открытых страниц;
в правой части окна находится текст просматриваемой в данный момент страницы.
Практика и тестирование
Заключение
В этом модуле мы познакомились с несколькими типами справочных систем в Astra Linux:
Справка по встроенным командам оболочки bash
Справочные страницы
Справка от проекта GNU
Справка по работе в графическом режиме Astra Linux
Мы изучили основные принципы работы с этими системами и попробовали найти нужную информацию только с их помощью. Затем, воспользовавшись этой информацией, мы настроили одну из опций оболочки.
В следующем модуле мы познакомимся с концепцией «Все есть файл» и стандартом иерархии файловых систем (Filesystem Hierarchy Standard, FHS). Мы узнаем об особенностях устройства классических файловых систем для Linux, познакомимся с различными типами файлов и научимся работать с ними.