2.3 Получение справки по командам оболочки Linux (Getting Help for Linux Shell Commands)¶
Одним из несомненных достоинств Linux является обилие документации и справочных материалов. Для любой задачи администрирования или любой утилиты Linux вы, скорее всего, найдёте документацию, которая объяснит, как её решить. В этом разделе мы рассмотрим два отличных инструмента для получения справки при работе с Linux.
Прежде чем перейти к ним, важно понять несколько ключевых особенностей документации Linux.
Во-первых, поставщик вашего дистрибутива, вероятно, предоставляет какую-либо общесистемную документацию. Однако эта документация, как правило, весьма скудна — для некоторых дистрибутивов её может не быть вовсе.
Это объясняется тем, что каждая служба или программа, устанавливаемая в Linux, обычно поставляется с собственной документацией. Если учесть количество различных пакетов, входящих в состав Linux, станет понятно: составить единую документацию, охватывающую все эти пакеты, — задача огромной сложности. Поэтому поставщики дистрибутивов опираются на сообщество разработчиков свободного программного обеспечения, которое документирует все используемые в Linux приложения и службы.
Это подводит нас ко второй особенности: как правило, документацию к конкретной службе или утилите пишет тот же программист, который её разработал. Лишь часть документации к программному обеспечению Linux написана профессиональными техническими писателями. Это приводит к заметным различиям в качестве документации. Одни программисты умеют хорошо писать: они излагают мысли понятно и умеют организовать информацию так, чтобы её было легко воспринимать.
К сожалению, у других программистов с документированием дела обстоят плохо. Ключевая ошибка, которую они допускают, — предположение, что читатель обладает таким же уровнем знаний, как и они сами. (Здесь возникает очевидное противоречие: если читатель знает столько же, сколько автор, — зачем ему вообще нужна документация?) Такая документация, как правило, неполна и малоинформативна.
Примечание
Если вы столкнулись с подобной ситуацией и располагаете свободным временем, большинство программистов будут рады добровольному помощнику в написании документации. Как вы увидите далее в этой главе, большинство справочных источников Linux содержат контактный адрес электронной почты, по которому можно связаться с автором.
Третья особенность состоит в том, что большинство источников документации Linux не являются печатными. В ранние годы Linux многие дистрибутивы поставлялись с толстым печатным руководством. Первый дистрибутив Linux, который я устанавливал в 1995 году (Caldera OpenLinux версии 1.0), сопровождался именно таким руководством. Сегодня, однако, печатные руководства — редкость. Как нетрудно догадаться, печать руководств подобного объёма обходится очень дорого и требует большого расхода бумаги. Поэтому практически вся актуальная документация для дистрибутивов Linux распространяется в электронном формате.
Совет к экзамену
Умение получать справку при работе с Linux — важнейший навык системного администратора. Когда возникает проблема, необходимо быстро найти ответ. Поэтому на экзаменах Linux+ и LPIC-1 вы должны уметь пользоваться различными инструментами поиска справки. Вам необходимо хорошо знать man и info: как запустить эти утилиты, как перемещаться по отображаемой информации и как выйти из них.
В этом разделе главы вы познакомитесь с различными источниками справки при работе с Linux. Будут рассмотрены следующие темы:
- работа со страницами руководства (
man); - работа с утилитой
info.
Начнём с рассмотрения утилиты man.
Работа со страницами руководства man¶
Один из основных способов ведения документации в Linux — использование страниц руководства (man-страниц, man pages). Эти страницы содержат документацию как об операционной системе в целом, так и о любых установленных на ней приложениях. Для просмотра man-страниц используется утилита man.
Утилита man была изначально разработана и применялась в операционной системе UNIX. Впоследствии она была перенесена на Linux и предоставляет ту же функциональность, что и в UNIX. С её помощью можно отобразить страницу руководства для любой команды, утилиты или файла Linux.
man — незаменимый инструмент при работе с Linux-системой. Если учесть, что даже на самой простой Linux-системе доступно огромное количество команд и утилит, причём некоторые из них используются очень редко, запомнить синтаксис и параметры каждой из них практически невозможно.
В таких ситуациях man приходит на помощь. Если при работе с какой-либо командой или утилитой возникли затруднения, достаточно воспользоваться man, чтобы отобразить соответствующую страницу руководства и вспомнить порядок её использования.
Помимо системных команд и утилит, man-страницы ведутся и для большинства пакетов. При установке пакета на Linux вместе с ним устанавливаются и man-страницы с документацией к этому программному обеспечению. Таким образом, man позволяет просматривать документацию и для установленных пакетов.
В этом разделе мы рассмотрим следующие темы:
- структура каталогов man;
- разделы руководства;
- использование man для просмотра документации.
Структура каталогов man¶
Страницы, отображаемые утилитой man, хранятся в нескольких каталогах внутри пути, заданного переменной окружения MANPATH. На 64-разрядной системе openSUSE Linux переменная MANPATH указывает на каталоги /usr/lib64/mpi/gcc/openmpi/share/man, /usr/local/man и /usr/share/man.
Проверить значение MANPATH на своей системе можно, введя echo $MANPATH в приглашении командной строки. В ответ будет выведен список каталогов, разделённых двоеточием:

Рис. 2-3. Настройка каталогов man в Fedora с помощью файла /etc/man_db.conf.
Важно учитывать, что утилита man может быть реализована по-разному в различных дистрибутивах. Например, в дистрибутиве Fedora по умолчанию не используется переменная окружения MANPATH. Вместо этого применяется директива MANPATH_MAP в файле /etc/man_db.conf, которая задаёт каталоги с man-страницами. Пример такого файла конфигурации показан на рис. 2-3.
Внутри каталогов, заданных переменной MANPATH или директивой MANPATH_MAP в файле /etc/man_db.conf, располагается ряд подкаталогов с именами man1, man2, man3 и так далее:
rtracy@openSUSE:/usr/share/man> ls
ar cs et gd ja man1p man9 pa sk ug
ast cy eu gl kk man2 mann pl sl uk
be da fa he km man3 ml ps sq uz
bg de fi hi ko man3p ms pt sr vi
bn el fo hr ku man4 my pt_BR sv zh
bo en_AU fr hu lt man5 nb ro ta zh_CN
bs en_GB fr.ISO8859-1 id lv man6 nl ru te zh_HK
ca eo fr.UTF-8 io man0p man7 nn shn th zh_TW
ca@valencia es fy it man1 man8 oc si tr
Некоторые из этих каталогов не являются разделами руководства: такие каталоги, как hu, it, jp, предназначены для man-страниц, локализованных на языки, отличные от английского.
Переменная MANPATH по умолчанию не задана и в дистрибутивах Ubuntu. На Ubuntu путь к man-страницам можно узнать с помощью команды man -w.
Разделы руководства¶
Все man-страницы, хранящиеся в различных каталогах, в совокупности образуют руководство (manual). Каждый из перечисленных каталогов представляет собой раздел этого руководства. Стандарты, которых придерживаются авторы man-страниц, делят руководство на разделы, указанные в табл. 2-2.
| Раздел | Содержимое |
|---|---|
| 1 | Программы и команды оболочки, доступные любому пользователю |
| 2 | Системные функции, предоставляемые ядром Linux |
| 3 | Функции библиотек |
| 4 | Специальные файлы в /dev |
| 5 | Описания форматов файлов и соглашения |
| 6 | Игры |
| 7 | Разные соглашения |
| 8 | Административные утилиты для суперпользователя root |
| 9 | Документация по процедурам ядра |
Табл. 2-2. Разделы руководства man.
Man-страницы классифицируются и хранятся в соответствующих каталогах в зависимости от типа программного обеспечения, к которому они относятся. Большинство man-страниц, с которыми вы будете работать в этой книге, хранятся в разделе 1 (команды оболочки) и разделе 8 (административные утилиты).
Использование man для просмотра документации¶
Искать информацию с помощью man очень просто: достаточно ввести man и следом — имя утилиты, о которой нужно получить информацию.
Например, команда ls — полезная команда оболочки для отображения содержимого каталога. Она поддерживает множество параметров, определяющих формат вывода. Как узнать, какие это параметры? Воспользуйтесь man, чтобы отобразить страницу руководства для ls. Введите man ls в приглашении командной строки — и на экране появится страница, показанная на рис. 2-4.

Рис. 2-4. Просмотр man-страницы утилиты ls.
Man-страница состоит из нескольких элементов, как показано на рис. 2-4. Одни страницы содержат много разделов, другие — лишь несколько. Большинство man-страниц включают следующие разделы:
-
Заголовок (Title) — первая строка man-страницы. В ней указывается имя утилиты, команды или файла, а следом — номер раздела руководства. На рис. 2-4 первая строка содержит
LS(1). Это означает, что страница описывает утилитуlsи находится в разделе 1 руководства. Напомним из табл. 2-2: раздел 1 содержит страницы для команд и утилит, доступных всем пользователям системы. -
NAME — кратко указывает имя команды, файла или утилиты и её назначение. На рис. 2-4 раздел NAME показывает, что утилита
lsиспользуется для отображения содержимого каталога. -
SYNOPSIS — краткое описание синтаксиса команды или утилиты. Если страница документирует файл конфигурации (например,
smb.conf), раздел SYNOPSIS даёт краткое описание назначения этого файла. На рис. 2-4 раздел SYNOPSIS показывает синтаксис вызоваlsиз приглашения командной строки: вы можете ввестиlsи затем указать список параметров и имён файлов. -
DESCRIPTION — основная часть man-страницы. Здесь подробно описывается принцип работы команды, файла или утилиты, а также перечисляются доступные параметры. Например, на рис. 2-4 man-страница сообщает, что параметр
-aили--allзаставляетlsотображать скрытые каталоги и файлы наряду с обычными. Без man-страницы вы, скорее всего, никогда бы не узнали о существовании параметра-a.Совет к экзамену
Имена скрытых файлов и каталогов Linux начинаются с точки.
-
AUTHOR — имя программиста, написавшего команду, утилиту или службу, описанную в man-странице. Пример для утилиты
lsпоказан на рис. 2-5. -
REPORTING BUGS — адрес электронной почты для сообщений об ошибках, обнаруженных в утилите или документации, как показано на рис. 2-5.
-
COPYRIGHT — сведения о правообладателе команды, утилиты или службы, а также информация о правах на распространение, как показано на рис. 2-5.
-
SEE ALSO — список man-страниц и других ресурсов, связанных с текущей страницей. Например, на рис. 2-5 раздел SEE ALSO предлагает воспользоваться
infoдля просмотра полной документации по командеls. -
Номер версии и дата редакции (Version Number and Revision Date) — самая последняя строка man-страницы.

Рис. 2-5. Просмотр дополнительных разделов man-страницы для утилиты ls.
Все разделы, кроме NAME, являются необязательными. Авторы вправе добавлять новые разделы, которые не вошли в приведённый список, если этого требует конкретная программа. Вы можете встретить man-страницы с такими разделами, как OPTIONS, FILES, ENVIRONMENT и DIAGNOSTICS.
При отображении man-страницы в самой нижней строке экрана показывается строка состояния с информацией о текущей странице, отображаемой строке и положении в документе. На рис. 2-5 строка состояния показывает, что отображается man-страница ls(1), текущей верхней строкой является строка 224, и отображаемый текст находится примерно на 99 процентах документа.
Для перемещения по man-странице используйте комбинации клавиш, перечисленные в табл. 2-3.
| Клавиша | Функция |
|---|---|
| стрелка вниз | Прокрутка на одну строку вниз |
| стрелка вверх | Прокрутка на одну строку вверх |
| Page Down | Прокрутка на 14 строк вниз |
| Page Up | Прокрутка на 14 строк вверх |
| пробел | Прокрутка на 26 строк вниз |
| Home | Переход к началу страницы |
| End | Переход к концу страницы |
| q | Закрытие текущей man-страницы и выход из утилиты man |
Табл. 2-3. Клавиши навигации в man-страницах.
Одни man-страницы коротки и лаконичны, другие — весьма объёмны. При работе с man-страницей может потребоваться поиск конкретного термина.
Например, при работе с командой ls вам может понадобиться просмотреть расширенную информацию о файлах и каталогах. Обратите внимание на рис. 2-4: по умолчанию ls отображает только имена файлов и каталогов в текущем каталоге. А что если нужно увидеть расширенную информацию: права доступа, сведения о владельце, размер файла или дату последнего изменения? Такой вывод называется форматом подробного листинга (long listing format). Какой параметр ls позволяет использовать этот формат?
Для поиска конкретных сведений в man-странице введите косую черту (/), а затем — искомый текст. Например, чтобы узнать, как получить подробный листинг с помощью ls, откройте man-страницу командой man ls, а затем введите /long для поиска строки «long». Это показано на рис. 2-6.
После нажатия Enter будет найдено первое вхождение «long» в man-странице. Для перехода к следующему вхождению нажмите n. После нескольких нажатий n вы найдёте нужное вхождение, как показано на рис. 2-6. Как видно, параметр -l заставляет ls выводить результаты в подробном формате, показывая права доступа, сведения о владельце, размер и дату последнего изменения файлов и каталогов.
Нередко возникает ситуация, когда нужно найти информацию в man-странице, но точное название нужной команды не вспомнить. Напомним: для открытия man-страницы нужно знать название команды, утилиты или файла. Если вы его не помните, можно воспользоваться двумя инструментами поиска по man-страницам:
-
Из вывода становится понятно, что для удаления каталога используется командаman -k— параметр-kпозволяет выполнить поиск по именам и описаниям всех man-страниц для нахождения конкретного ключевого слова. Например, если нужно удалить каталог из файловой системы, но не вспомнить, какая утилита для этого служит, введитеman -k "remove empty"в приглашении командной строки — и будет выведен список man-страниц, содержащих фразу «remove empty»:rmdir. Теперь можно ввестиman rmdir, чтобы узнать, как ею пользоваться. -
apropos— утилитаaproposвыполняет практически то же, что и командаman -k: позволяет искать по именам и описаниям man-страниц для нахождения заданной строки. Например, для поиска man-страниц, содержащих слово «remove», введитеapropos remove.
Попрактикуемся в использовании man в следующем упражнении.

Рис. 2-6. Поиск текстовой строки «long» в man-странице.
Упражнение 2-5. Работа со страницами руководства man
В этом упражнении вы попрактикуетесь в использовании утилиты man для просмотра страниц руководства по утилитам Linux. Упражнение можно выполнить на виртуальной машине, прилагаемой к книге. Для получения правильно настроенной среды загрузите снимок состояния (snapshot) 2-1.
VIDEO Посмотрите видео к упражнению 2-5 с демонстрацией выполнения этого задания.
Выполните следующие действия:
- Загрузите систему Linux в режим приглашения командной строки. Если система загрузилась в графическую среду, войдите в систему как пользователь
studentс паролемstudent, а затем нажмите Ctrl-Alt-F1. - Выполните аутентификацию как пользователь
studentс паролемstudent. - В приглашении командной строки введите
man cp. - Ответьте на следующие вопросы:
- Для чего предназначена утилита
cp? - Что делает параметр
-rпри использовании сcp? - Кто написал утилиту
cp? - По какому адресу электронной почты можно сообщить об обнаруженных ошибках?
- В каком разделе руководства находится страница
cp? - Если необходимо, чтобы утилита
cpзапрашивала подтверждение перед перезаписью существующего файла, какой параметр следует использовать?
- Для чего предназначена утилита
- Закройте
man, нажавq. - Введите
logout, затем нажмите Alt-F7.
Работа с утилитой info¶
Помимо man, для просмотра документации по командам, утилитам, службам и файлам Linux можно использовать утилиту info. Возникает закономерный вопрос: зачем нужен info, если уже есть man? Обе утилиты преследуют схожую цель, однако реализуют её по-разному.
Утилита man — «быстрый» справочник. Man-страницы содержат много информации, но не предназначены для обучения. По сути, man говорит: «Вот утилита и её синтаксис — разберитесь сами».
Утилита info, напротив, ориентирована на обучение. Большинство узлов info содержат ту же информацию, что и man-страницы. Однако узлы info обычно значительно подробнее и действительно учат работать с тем или иным инструментом Linux.
Примечание
Единицы информации, отображаемые утилитой info, называются не страницами, а узлами (nodes). Почему — станет понятно далее в этой главе.
Запуск info выполняется так же, как и man: достаточно ввести info и следом — имя команды, утилиты, службы или файла, о которых нужно получить информацию. Например, ранее мы использовали man для просмотра информации об утилите ls. Чтобы изучить ls с помощью info, введите info ls. В результате отобразится информация, показанная на рис. 2-7.
Сразу же можно заметить несколько отличий от man. Информация, доступная в man-странице ls, достаточно скудна. info, напротив, предоставляет гораздо более подробные сведения: узел info объясняет, что делает утилита ls и чего следует ожидать при её использовании.
Обратите внимание на рис. 2-7: в верхней строке отображения info показана информация о текущей странице. Файл с информацией называется coreutils.info. В данный момент в этом файле отображается узел ls invocation. Следующий узел в файле называется dir invocation.
Одно из ключевых отличий info от man состоит в том, что info разделяет информацию на узлы, тогда как man отображает всю информацию об утилите или команде на одной странице. Для навигации в интерфейсе info и между узлами используйте клавиши из табл. 2-4.

Рис. 2-7. Использование info для просмотра информации об утилите ls.
Как и в man, в info можно выполнять поиск. Для поиска в текущем узле нажмите Ctrl-S. При этом появится приглашение I-search, как показано на рис. 2-8. В этом приглашении введите искомый текст и нажмите Enter. Будет отображено первое вхождение введённого текста после текущего положения курсора. Повторное нажатие Ctrl-S переместит курсор к следующему вхождению.
| Клавиша | Функция |
|---|---|
| стрелка вниз | Прокрутка на одну строку вниз |
| стрелка вверх | Прокрутка на одну строку вверх |
| Page Down | Прокрутка на одну страницу вниз |
| Page Up | Прокрутка на одну страницу вверх |
| пробел | Прокрутка на одну страницу вниз |
| Del или Backspace | Прокрутка на одну страницу вверх |
| Home | Переход к началу узла |
| End | Переход к концу узла |
| n | Переход к следующему узлу |
| p | Переход к предыдущему узлу |
| q | Закрытие текущего узла и выход из утилиты info |
Табл. 2-4. Клавиши навигации в info.

Рис. 2-8. Поиск информации в узле info.
Упражнение 2-6. Работа с утилитой info
В этом упражнении вы попрактикуетесь в использовании утилиты info для просмотра документации в системе Linux. Упражнение можно выполнить на виртуальной машине, прилагаемой к книге. Для получения правильно настроенной среды загрузите снимок состояния (snapshot) 2-1.
VIDEO Посмотрите видео к упражнению 2-6 с демонстрацией выполнения этого задания.
Выполните следующие действия:
- Если вы ещё этого не сделали, загрузите систему Linux и войдите в неё.
- При необходимости запустите сеанс терминала.
- В приглашении командной строки введите
info rm. - Ответьте на следующие вопросы:
- Для чего предназначена утилита
rm? - Что делает параметр
-vпри использовании сrm? - В каком узле находится документация по
rm? - Какой узел предшествует текущему?
- Какой узел следует за текущим?
- Если необходимо, чтобы утилита
rmзапрашивала подтверждение перед удалением каждого файла, какой параметр следует использовать? - Если нужно быть уверенным, что удалённый файл не может быть восстановлен, подходит ли для этого утилита
rm?
- Для чего предназначена утилита
- Закройте
info, нажавq.
Теперь, когда вы умеете работать с оболочкой bash, перейдём к рассмотрению задач, которые необходимо уметь выполнять с её помощью. Следующая тема посвящена работе с переменными окружения.