Все, что вам нужно знать о Linux, можно найти в man. Это интерфейс, используемый для просмотра справочных руководств системы, отсюда и название: man - сокращение от manual. Например, можно выполнить поиск команды для выполнения задачи, даже если неизвестно, как она называется. Но как найти само руководство? В этой статье расскажем о некоторых скрытых возможностях этой команды.
Встроенное руководство Linux
Существует старая шутка: единственная команда, которую нужно знать в Linux это man – точка входа в руководство пользователя. Несмотря на то, что тут есть доля правды, но даже сама команда man может ввести в тупик вначале. Вернее, поиск информации с помощью этой команды.
Наверное, у всех был случай, когда знали, что вы хотите сделать, но не знали какая команда поможет выполнить поставленную задачу. Это похоже на то, как искать слово в словаре при том, не зная самого слова.
Итак, как же можно найти, то что нужно? С man
можно легко обойти эту сложность.
Цифры - еще одна сложность перед новичками. Что они означают? Вы документации или в просторах Интернета часто можно увидеть такие ссылки, man (2)
или man (5)
. Также можно встретить ссылки на команды, за которыми следуют цифры, такие как mount (2)
и mount (8)
. Конечно, не может быть больше одной команды mount
, верно? Как мы увидим, цифры важны и их понять относительно просто.
Проще говоря, вести поиск по man
достаточно легко если один раз понять, как это работает. На самом деле, есть несколько способов поиска и навигации в man
.
Как перейти к руководству
Чтобы запустить руководство по какой либо-команде достаточно в командной строке набрать команду man
, а затем через пробел название команды, по которой нужно руководство. После этого система запустить руководство по команде – конечно, если найдет. Давайте посмотрим, что покажет команда man
по man
:
man man
Ниже показано руководство по команде man
:
Как видно, это первая страница руководства man (1)
. Чтобы просмотреть другие страница выполните одно из следующих действий:
- Чтобы прокрутить по одной строчке: используйте колесо мыши, стрелки вверх или вниз и клавишу Enter.
- Для перехода на следующую страницу: Нажмите клавишу пробел, или же кнопки PgUp PgDown.
- Для перехода в начало и конец руководства: Клавиши Home и End
Если нажать H
(заглавная h
), то можно перейти в раздел помощи, где можно найти альтернативные комбинации, которыми можно пользоваться для навигации. Чтобы выйти из руководства нажмите Q
.
Структура руководства
В начале страницы можно увидеть Название (Name) и Описание (Synopsis). Есть определённые правила оформления страницы руководства. Есть руководства по командам, программам, функциям и т.д. Не во всех руководствах есть эти заголовки, так как некоторые из них применимы только к конкретным командам.
Ниже приведён список заголовков, которые можно встретить в руководстве.
- Название (Name): название команды, по которой просматривается руководство
- Синопсис (Synopsis): Краткое описание команды и синтаксиса
- Конфигурация (Configuration): Детали настройки для устройства
- Описание (Description): Описание основного назначения программы
- Опции (Ключи): опции которые принимает команда
- Выходной статус (Exit Status): Возможные значения, возвращаемые командой при завершении работы
- Возвращаемое значение (Return Value): Если руководство запущено по какой-то библиотеке, то это указывает на значение, которое вернет библиотека функции, которая вызвала ее.
- Ошибки (Errors): Список всех значение, которые может принимать
errno
в случае ошибки выполнения команды - Окружение (Environment): Список переменных окружения, которые относятся к команде или программе
- Файлы (Files): Список файлов, которые использует команда или программа, например, конфигурационный файл
- Атрибуты (Attributes): Список различных атрибутов команды
- Версии (Versions): Список изменений в ядре Linux или библиотеке, которую использует команда
- Соответствие (Conforming to): Описание любых стандартов, которым может соответствовать команда, например, POSIX.
- Заметки (Notes): Дополнительные заметки
- Баги (Bugs): Известные ошибки
- Примеры (Examples): Один или несколько примеров использования команды
- Авторы (Authors): Люди, которые разработали и поддерживают команду
- Просмотрите также (See Also): Рекомендуемые материалы по команде
Разделы руководства
Прокрутив ниже на несколько страниц увидите список разделов в данном руководстве:
Это следующие разделы:
- Основные команды (General commands): Команды, которые используются в командной строке
- Системные вызовы (System calls): Функции ядра, которые может вызвать программа
- Функции библиотек (Library functions): общий набор функций и возможностей, используемых программами
- Форматы файлов и соглашения (File formats and conventions): Форматы файлов как passwd, cron table, tar архивы
- Специальные файлы (Special files): обычно устройства, например, найденные в
/dev
, и их драйверы. - Игры (Games): Описание команд, например, fortuna, которая при запуске показывает цитаты из БД
- Дополнительно (Miscellaneous): Описание таких вещей как inodes, параметры загрузку
- Администрирование системы (System administration): Команды и демоны, зарезервированные для использования root-ом.
- Распорядок ядра (Kernel Routines): Информация, касающаяся внутренних операций ядра. Сюда входят функциональные интерфейсы и переменные, которые могут быть использованы программистами, которые разрабатывает драйвера устройств.
Цифры в скобках рядом с командой указывают на раздел руководства. Например, man (1)
означает первый раздел руководства, которая описывает работу команды man.
На скриншоте выше видна ссылка на man (7)
. Это значит, что подробную информацию о команде можно найти в другом разделе. Когда впервые открываем руководство по команде, оно показывает man (1)
. Если ввели команду man без указания раздела, команда будет искать переданные параметр во всех разделы по очереди и конечно же первым выведет первый раздел.
Если нужно найти информацию в конкретном разделе нужно передать команде номер этого раздела.
Например, чтобы открыть седьмой раздел руководства по команде man введем следующую команду:
man 7 man
Руководство откроется с седьмого раздела:
Эта страница руководства содержит инструкции по созданию руководства. Она описывает формат файлов и макросы, которые можно использовать для автоматизации части работы. man (1)
же в начале руководства описывает как вообще использовать саму команду man
.
Поиск записей в разделах
В основном, если нужно просто узнать, как пользоваться той или иной командой, не надо указывать номер раздела. man
найдёт стандартную запись в первом разделе руководства, которая описывает как нужно пользоваться командой. Иногда же, в поиске нестандартной информации, нужно открыть конкретный раздел, содержащий запись по команде.
В Linux легко можно найти разделы, в которых встречается нужная записб. Каждое руководство обладает названием и кратким описанием. Ключ –f
(whatis) ведёт поиск по заголовкам и возвращает все вхождения.
Например, введем следующую команду:
man -f man
Команда нашла два совпадения для команды man
с разделами и кратким описанием. Однако будьте осторожны - некоторые записи имеют одинаковое название, но описывают разные команды и функции.
Например, введём следующую команду:
man -f printf
Как видно, для команды printf
были найдены две записи: одна в первом разделе, и другая в третьем разделе. Однако это разные команды. Информация в разделе 1 описывает команду printf
командной строки, которая форматирует данные при выводе в окно терминала. В третьем же разделе описывается семейство функций библиотеки printf
в языке программирования C.
Также возможен поиск по кратким описаниям, а также заголовкам страниц. Для этого используется параметр -k
(apropos). Это также будет искать соответствия искомому термину поиска внутри других, более длинных слов.
Вводим следующее:
man -k printf
Многие из этих команд описаны в одних и тех же информационных страницах, поскольку их основные функциональные возможности в основном одинаковы. Справочная страница для vprintf описывает функциональность 10 команд, перечисленных на рисунке выше.
Эту функцию можно использовать для поиска информации, для выполнения конкретной задачи, даже если не знаете имя команды, которую хотите использовать.
Допустим, нужно изменить пароль учетной записи пользователя. Мы можем искать любые команды, которые упоминают "user"
в заголовках или описаниях страницы. Затем его можно пропустить через функцию grep
для поиска записей, содержащих слово "password"
.
Для этого нужно ввести следующую команду:
man -k 'user ' | grep password
Так как слово user мы выделили одинарными кавычками и в конце поставили пробел, команда будет искать только слово “user”
, а не “users”
. Бегло просмотрев результат, можно заметить, что самая подходящая команда это passwd
.
Так как правило использования указано в первом разделе руководства, не нужно указывать конкретный раздел:
man passwd
Допустим на нужна команда, которая выводит количество слове в текстовом файле. Набираем в командной строке, что-то подобное:
man –k word | grep count
Чтобы узнать все, что нужно знать о подсчете слов, введите следующую команду:
man wc
Говоря о wc
, мы также можем в качестве значения передать параметру –k
точку .
, что означает любой символ. А затем передать вывод команде wc
, которой передадим еще и параметр –l
(lines), на выводе мы получим число страниц руководства.
Чтобы сделать все это введем команду:
man -k . | wc -l
Итого, у нас 6 706 страниц руководства, но не пусть вас не путает, если у вас это число отличается, так как объем руководства напрямую зависит от установленных в системе программ и предустановленных справочников.
Поиск по руководству
Также есть возможность вести поиск по самому руководству. Например, давайте рассмотрим руководство по команде history
:
man history
Чтобы вести поиск в следующих страницах от текущей вводим символ прямой косой черты /
и набираем искомое слово. Результат этих действий будет отображаться внизу командной строки. Чтобы начать поиск нажимаем Enter.
Система выведет и выделит первое совпадение по искомому слову:
Чтобы перейти к следующему результату нажмите n
, а чтобы перейти к предыдущим результатам – N
.
Включить или выключить подсветку найденного слова можно сочетанием клавиш Esc+U
.
Если же дошли до конца руководства, но не нашли нужную информацию, то можно вести поиск в обратном направлении. Для этого нажимаем ?
и набираем нужный текст:
Также можно перемещаться вперед и назад по найденным результатам.
Есть другой способ поиска по руководству. Он скрывает все строки, которые не содержат совпадения с искомым словом, поэтому лучше использовать номера строк с этим методом.
Если набрать –N
и нажать Enter во время просмотра руководства, то радом со строками отобразятся номера строк.
Теперь нажимаем на &
, набираем искомое слово и нажимаем Enter.
Теперь отобразятся только строки, в которых найдено искомая фраза:
Просмотре вывод можно найти наиболее интересные результаты. Мы видим, что строка 292 наиболее подходящая и хотим просмотреть данный раздел руководства.
Чтобы показать все снова держим нажатым &
и нажимаем Enter.
Теперь набираем номер строки: 292, а затем букву «g», чтобы перейти к указанной строке.
Как только мы нажмем «g» нас перебросит на 292 строку (именно поэтому на скриншоте выше не показана буква «g»).
Чтобы убрать нумерацию строк достаточно набрать –n
и нажать Enter.
Прочитайте волшебное руководство
На страницах руководства много полезной информации. Даже у команд, которые вы думаете, вы хорошо знаете, есть такие возможности, о которых вы никогда не слышали.
Вы также определенно найдете команды, о существовании которых вы не знали. С таким количеством различных способов поиска и отслеживания информации, потрясающе иметь под рукой такую команду.