Получение справки по командам Linux

LinuxBeginner
Практиковаться сейчас

Введение

Опытные пользователи Linux не запоминают каждую команду и каждый её параметр. Они умеют спросить у системы, что означает имя, найти краткое описание использования, открыть полную документацию и выполнить поиск по справочным страницам на основе темы.

Эта лабораторная работа является продолжением изучения базовых операций с файлами. Вы исследуете знакомые команды, такие как cd, ls и cp, а затем сохраните небольшие файлы с результатами в каталоге /home/labex/project/command-help. К концу работы незнакомый синтаксис перестанет быть препятствием и станет поводом обратиться к документации.

Определение назначения имени команды

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

Перейдите в рабочий каталог лаборатории:

cd /home/labex/project/command-help

Некоторые команды встроены непосредственно в оболочку, поскольку им необходимо изменять состояние самой оболочки. Узнайте у оболочки, чем является cd:

type cd

Вы должны увидеть вывод, содержащий:

cd is a shell builtin

Другие имена могут быть псевдонимами — короткими заменами, настроенными в оболочке, — или внешними программами, сохранёнными в виде файлов. Проверьте ls:

type ls

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

type -a ls

command -V выводит ещё одно удобочитаемое описание:

command -V cp

command -v выводит команду или путь, которые оболочка фактически выбрала бы для выполнения:

command -v cp

Сохраните краткий отчёт о классификации. Первая > создаёт новый отчёт или заменяет существующий, а последующие >> добавляют вывод очередной команды, не удаляя предыдущие строки:

type cd > command-types.txt
type ls >> command-types.txt
command -V cp >> command-types.txt
cat command-types.txt

В отчёте должно быть указано, что cd является встроенной командой, а также приведено описание ls и cp. Знание типа команды помогает выбрать источник справки: для встроенных команд оболочки часто используется help, тогда как внешние программы обычно поддерживают --help и имеют справочные страницы.

Чтение краткой справки и синтаксиса использования

На этом шаге вы воспользуетесь встроенной справкой и параметром --help, а также научитесь читать распространённые обозначения в строке с описанием использования команды.

Поскольку cd является встроенной командой оболочки, запросите её документацию у Bash с помощью help:

help cd

Первая строка начинается с шаблона использования, похожего на cd [-L|[-P ...]] [dir]. Пока не нужно разбираться во всех параметрах. Обратите внимание на структуру: сначала указывается имя команды, а элементы в квадратных скобках являются необязательными.

Внешние программы часто поддерживают --help. Полная справка ls довольно объёмна, поэтому здесь впервые намеренно используется конвейер. Конвейер записывается символом |. Команда слева выводит обычный результат, а команда справа получает этот вывод на вход. В данном случае head -n 8 оставляет только первые восемь строк:

ls --help | head -n 8

Первая строка имеет общий вид:

Usage: ls [OPTION]... [FILE]...

[OPTION]... означает ноль или более параметров. [FILE]... означает ноль или более аргументов, являющихся файлами или каталогами. Квадратные скобки описывают синтаксис — вводить их буквально не нужно.

Проверьте краткую справку по копированию:

cp --help | head -n 8

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

echo "=== ls ===" > quick-help.txt
ls --help | head -n 3 >> quick-help.txt
echo "=== cp ===" >> quick-help.txt
cp --help | head -n 3 >> quick-help.txt
cat quick-help.txt

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

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

На этом шаге вы воспользуетесь интерактивной программой просмотра man и узнаете, что означают разделы справочника.

Откройте справочную страницу для ls:

man ls

Обычно справочная страница открывается в программе постраничного просмотра less. Потренируйтесь использовать следующие клавиши:

  • Стрелка вниз: перейти на одну строку вниз;
  • Пробел: перейти на один экран вперёд;
  • b: перейти на один экран назад;
  • введите /sort и нажмите Enter: выполнить поиск sort вперёд по тексту;
  • n: перейти к следующему совпадению;
  • q: выйти и вернуться к приглашению оболочки.

В заголовке обычно указано LS(1). Число обозначает раздел справочника. Раздел 1 содержит обычные пользовательские команды; другие разделы посвящены системным вызовам, функциям библиотек, форматам конфигурации и административным командам.

Используйте man -f, чтобы получить однострочное описание, также известное как запрос “whatis”:

man -f ls

Сохраните неинтерактивный фрагмент той же справочной страницы. Читайте этот конвейер слева направо: -P cat заставляет man выводить текст вместо открытия постраничного просмотра, col -b удаляет управляющие символы форматирования терминала, head -n 20 оставляет двадцать строк, а > сохраняет итоговый поток:

man -P cat ls | col -b | head -n 20 > ls-man-excerpt.txt
cat ls-man-excerpt.txt

Вы должны увидеть заголовок страницы, имя команды, краткое описание синтаксиса и начало описания. Это подтверждает, что интерактивное и неинтерактивное представления используют одну и ту же документацию.

Поиск команд по тематике

На этом шаге вы воспользуетесь apropos, когда знаете, какую задачу нужно выполнить, но не знаете имя подходящей команды.

apropos выполняет поиск по кратким описаниям, хранящимся в базе справочных страниц. Найдите документацию, связанную с паролями:

apropos password | head -n 15

Каждый результат содержит имя справочной страницы, её раздел в скобках и краткое описание. Среди результатов должна быть строка с описанием passwd.

Выполните поиск по темам, связанным с файлами:

apropos file | head -n 20

Широкие ключевые слова возвращают множество результатов. Более точная фраза может оказаться полезнее:

apropos "copy files"

Также можно отфильтровать широкий список результатов. Параметр -i заставляет grep игнорировать регистр, а -m 5 прекращает поиск после пяти совпавших строк:

apropos file | grep -i -m 5 'copy'

Сохраните полный результат поиска по паролям, чтобы изучить его позже:

apropos password > password-topics.txt
grep -E '^passwd|change.*password' password-topics.txt | head

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

Итоги

Вы освоили универсальную стратегию поиска справки: используйте type или command -V, чтобы определить назначение имени, help или --help — для быстрого просмотра синтаксиса, man — для полной документации, а apropos — когда известна тема, но неизвестно имя команды. Эти инструменты избавляют от необходимости запоминать каждый параметр и помогают исследовать незнакомые команды на протяжении всего курса.