Learning Platform
Глоссарий Troubleshooting
Урок 02.03 · 18 мин
Начальный
LinuxHelpmantldrErrorsDebugging

Как выбраться, когда застрял: —help, man, tldr и частые ошибки

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

А в конце урока мы наведём мостик в будущее: вы узнаете, куда ведёт эта дорога — к ядру, системным вызовам и инструменту strace — и почему туда пока рано, и это абсолютно нормально.


Способ 1: флаг —help

Почти любая команда умеет рассказать о себе, если добавить --help. Она выведет краткую справку: что делает команда и какие у неё флаги.

$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).

  -a, --all                  do not ignore entries starting with .
  -l                         use a long listing format
  -F, --classify             append indicator (one of */=>@|) to entries
  -h, --human-readable       with -l, print sizes like 1K 234M 2G
  ...

Вот откуда мы взяли флаги -a, -l, -F из прошлых уроков — они все перечислены здесь. Когда забыли флаг или не уверены, что команда делает — команда --help это первое, что стоит попробовать. Быстро и почти всегда работает.


Способ 2: man — полное руководство

man (manual) открывает подробное руководство по команде. Это длиннее и серьёзнее, чем --help — здесь полное описание всех возможностей.

$ man ls
LS(1)                          User Commands                         LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).
       ...

Важная деталь: man открывается в том же режиме просмотра, что и less из прошлого урока. Это значит — листать стрелками и пробелом, искать через /, а выйти клавишей q. Если вы открыли man и не знаете, как вернуться в терминал — нажмите q. Это та же ловушка «застрял в просмотре», и выход тот же.


Способ 3: tldr — примеры вместо теории

man бывает перегружен: для простого вопроса «как мне скопировать папку» приходится читать страницы текста. Поэтому существует tldr (от too long; didn’t read — «слишком длинно, не читал»). Он показывает несколько живых примеров — самое нужное и сразу:

$ tldr tar
tar
Archiving utility.

- Create an archive from files:
    tar cf target.tar file1 file2 file3

- Extract an archive:
    tar xf source.tar

- List the contents of an archive:
    tar tvf source.tar

tldr не входит в систему по умолчанию — его обычно ставят отдельно (sudo apt install tldr). Но для новичка это часто самый дружелюбный способ: вместо стены текста — три примера, которые можно скопировать. Когда man пугает объёмом, попробуйте tldr.


Читаем сообщения об ошибках

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

command not found

$ pyton script.py
pyton: command not found

command not found означает: «такой команды я не знаю». В 90 процентах случаев это опечатка в названии — здесь pyton вместо python. Перечитайте команду по буквам. Если написано правильно, но всё равно не находит — значит, программа просто не установлена в системе, и её надо поставить (этим займёмся в модуле про пакетные менеджеры).

permission denied

$ cat /etc/shadow
cat: /etc/shadow: Permission denied

permission denied означает: «у тебя нет прав на это». Linux — многопользовательская система, и не всё разрешено каждому. Файл /etc/shadow хранит пароли, и читать его обычному пользователю запрещено — это защита, а не поломка. Иногда такое решается запуском через sudo (от имени администратора), но далеко не всегда — и тут лучше остановиться и подумать, почему доступа нет, а не давить силой. Целый модуль курса посвящён правам доступа; пока достаточно понимать, что это сообщение — про разрешения, а не про вашу ошибку.

TIP

Когда видите незнакомую ошибку — скопируйте её текст целиком и вставьте в поисковик. Сообщения об ошибках в Linux одинаковы у всех, поэтому почти на любую уже есть готовый ответ на форумах. Это не «читерство», а нормальный рабочий приём, которым пользуются даже опытные инженеры каждый день.


Когда совсем застрял: чек-лист

Если что-то не работает и непонятно, пройдите по списку сверху вниз:

  1. Где я? Наберите pwd — возможно, вы просто не в той папке.
  2. Что вокруг? Наберите ls — может, нужного файла тут нет (или имя написано иначе).
  3. Прочитал ли я ошибку? Терминал почти всегда говорит причину словами. Прочитайте сообщение внимательно.
  4. Что делает эта команда? Загляните в команда --help или tldr команда.
  5. Застрял в полноэкранном просмотре (man или less)? Нажмите q.
  6. Совсем тупик? Скопируйте ошибку в поисковик.

Этот порядок снимает большинство ступоров новичка. Заметьте: почти всё решается без сторонней помощи, прямо в терминале.


Мостик в будущее: куда ведёт эта дорога

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

Дальше курс пойдёт вглубь. Вы узнаете, что под капотом каждой команды есть ядро (kernel) — главная программа, которая управляет всем железом. Что когда ls показывает файлы, он на самом деле просит ядро об этом через системные вызовы (system calls). Что есть инструмент strace, который показывает эти вызовы вживую и помогает отлаживать самые хитрые проблемы.

Всё это очень интересно — и абсолютно не нужно вам прямо сейчас. Если бы курс начался с syscalls и strace, это была бы стена, об которую разбивается мотивация. Сначала руки должны привыкнуть к командам, к навигации, к чтению ошибок. Глубина придёт следующим модулем, и к тому моменту она ляжет на готовую почву. Так что если слова «ядро» и «системный вызов» звучат пока абстрактно — это правильно. Рано. Вы к ним подойдёте подготовленными.


Попробуй сам

Потренируйтесь добывать справку и читать ошибки — это и есть навык урока:

$ mkdir --help          # узнайте, что делает флаг -p
$ cp --help             # найдите в выводе флаг -r (рекурсивно)
$ man cd                # откройте руководство и выйдите клавишей q

Теперь специально устройте две ошибки и прочитайте, что скажет терминал:

$ lss                   # опечатка: что выведет терминал?
lss: command not found
$ cat /etc/shadow       # запрещённый файл: какое сообщение?
cat: /etc/shadow: Permission denied

Прочитайте оба сообщения вслух и переведите их на человеческий: первое — «нет такой команды, проверь опечатку», второе — «нет прав, это нормальная защита». Когда вы перестаёте бояться красных строк и начинаете их читать — терминал из врага превращается в помощника.


Проверка знанийKnowledge check
Вы выполнили команду и получили сообщение "command not found". Вы открыли man этой команды, прочитали, и теперь не можете вернуться в терминал — экран занят руководством. Опишите, что произошло на каждом шаге и что делать.
ОтветAnswer
Сначала "command not found" означало, что система не знает такой команды — почти всегда это опечатка в названии (например cp написали как ccp) или программа не установлена. Затем вы открыли man этой команды: man показывает руководство в полноэкранном режиме просмотра, том же, что использует less. Экран "занят", потому что вы внутри этого просмотрщика, а не в обычной командной строке — обычные команды там не работают, нажатия клавиш листают текст. Чтобы вернуться в терминал, нужно нажать клавишу q (quit) — она закрывает man/less и возвращает обычное приглашение. После выхода стоит перечитать исходную команду по буквам: если это была опечатка, исправить её; если команда написана верно, но всё равно не находится, значит программу нужно установить через пакетный менеджер.

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 5. Вы забыли, какой флаг у ls показывает скрытые файлы. Что быстрее всего попробовать первым?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3