Learning Platform
Глоссарий Troubleshooting
Урок 03.04 · 16 мин
Начальный
Анатомия командыАргументыФлагиPromptОшибки

Анатомия команды

Ты уже напечатал несколько команд: pwd, ls, cd Downloads, mkdir practice. Заметил, что одни команды - это одно слово, а другие - слово плюс что-то ещё через пробел? Это не случайно. У каждой команды есть строение, как у фразы есть подлежащее и дополнение.

В этом уроке разберём команду на части. Когда ты поймёшь, из чего она состоит, перестанешь бояться длинных команд из интернета - научишься читать их как предложение. А ещё научишься читать сообщения об ошибках: что компьютер пытается тебе сказать, когда что-то идёт не так.


Команда как фраза официанту

Вспомни записку в кофейне из первого урока. Когда ты говоришь официанту «принеси кофе большой без сахара», во фразе три части:

  • что сделать - «принеси» (главное слово, действие);
  • что именно - «кофе» (на что направлено действие);
  • как именно - «большой, без сахара» (уточнения, настройки).

Команда в терминале устроена точно так же. Разберём на примере ls -l /home:

Команда ls -l /home по частям
lsИмя программы. Главное слово - что запустить. Здесь - программа показа содержимого папки
-lФлаг (опция). Начинается с дефиса. Меняет поведение: -l значит показать подробно, в столбик
/homeАргумент. На что направлена команда. Здесь - какую именно папку показать
что сделатьАналог глагола: показать список
как сделатьАналог наречия: подробно
с чем сделатьАналог дополнения: с папкой /home

Части всегда отделяются пробелом. Именно поэтому в прошлом уроке пробел в имени папки создавал путаницу: компьютер видит пробел и думает, что началась новая часть команды.


Имя программы

Первое слово - это всегда имя программы, которую ты хочешь запустить. ls - это отдельная маленькая программа, которая умеет показывать содержимое папки. pwd - программа, которая печатает текущий путь. mkdir - программа, создающая папки.

Можно представить, что в компьютере живёт целый ящик с инструментами, и каждый инструмент - это программа со своим именем. Печатая имя, ты как бы достаёшь нужный инструмент и говоришь: «работай».

$ ls
Desktop    Documents    Downloads

Здесь команда состоит только из имени, без уточнений. ls просто показывает текущую папку - этого часто достаточно.


Аргументы - на что направлено действие

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

Сравни. Без аргумента ls показывает текущую папку. А если дать ей аргумент - папку /home - она покажет содержимое именно этой папки, не сходя с места:

$ ls /home
student

Команде ls сказали: «покажи не здесь, а вон там, в /home». Точно так же cd Downloads - это программа cd с аргументом Downloads: «перейди именно в Downloads». Аргумент отвечает на вопрос «с чем работать».


Флаги - как именно сделать

Флаг (его ещё называют опция или ключ) меняет поведение команды. Флаг легко узнать: он начинается с дефиса -. Это как уточнение «без сахара» в заказе - то же действие, но с настройкой.

Сравни обычный ls и ls -l:

$ ls
Desktop    Documents    Downloads

$ ls -l
drwxr-xr-x  3 student  staff   96 May 28 10:12 Desktop
drwxr-xr-x  5 student  staff  160 May 27 18:40 Documents
drwxr-xr-x  8 student  staff  256 May 29 09:03 Downloads

Та же программа ls, тот же список папок - но флаг -l (от слова long, «подробно») велел показать всё в столбик и с деталями: права доступа, владелец, размер, дата изменения. Действие то же, оформление другое.

Флаги можно сочетать с аргументами. Команда ls -l /home - это «покажи подробно (флаг -l) содержимое папки /home (аргумент)»:

$ ls -l /home
drwxr-xr-x  4 student  student  4096 May 29 09:03 student
TIP

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

  • Linux и WSL2 (Ubuntu): печатай имя программы и флаг --help, например ls --help. Компьютер выведет список всех флагов с описанием - это встроенная шпаргалка.
  • macOS: здесь у ls другая, более старая версия, и ls --help она не понимает - в ответ напечатает короткую строчку вроде ls: illegal option -- - и подсказку по использованию (usage). Это не поломка и не твоя ошибка - просто на Mac справку смотрят иначе: командой man, например man ls (man - от manual, «руководство»). Откроется подробное описание; листать вниз - стрелками или пробелом, выйти - клавишей q. Кстати, man ls работает и в Linux/WSL2 - так что эту команду можно считать универсальной.

Приглашение - символ перед командой

Тот самый $ (или % на Mac) в начале строки называется приглашение (по-английски prompt). Это не часть твоей команды - это сообщение от компьютера: «я свободен и готов принять команду, печатай».

Понимать приглашение полезно по двум причинам.

Во-первых, в примерах из интернета и из этого курса строки часто начинаются с $. Это значит «вот команда, которую надо ввести». Сам знак $ печатать не надо - он уже стоит на экране. Печатаешь только то, что после него.

Во-вторых, пока команда работает (например, что-то скачивается), приглашение НЕ показывается - компьютер занят. Как только снова видишь $ на новой строке - значит, команда закончилась и можно вводить следующую.

$ mkdir reports
$

Первая строка - твоя команда. Вторая строка с одиноким $ - это вернувшееся приглашение: команда выполнена, компьютер снова ждёт.


Сообщение об ошибке - это подсказка, а не ругань

Рано или поздно компьютер ответит ошибкой. Новичка это пугает: кажется, что он что-то сломал. На самом деле ошибка - это просто вежливое сообщение: «я не смог сделать вот это вот по такой-то причине». Её надо не бояться, а читать.

Разберём типичную ошибку по частям:

$ cd reprots
cd: no such file or directory: reprots
Как читать сообщение об ошибке
cdКакая программа пожаловалась. Здесь - команда cd. Сразу понятно, кто не справился
no such file or directoryВ чём проблема: нет файла или папки с таким именем рядом
reprotsС чем именно проблема. Здесь видно опечатку: reprots вместо reports

Читается слева направо: программа cd сообщает, что нет такой папки, и называет проблемное имя - reprots. Видно опечатку: переставлены буквы, надо reports. Ошибка не отругала, а прямо показала, где смотреть.

Ещё одна частая ошибка - command not found:

$ maek reports
maek: command not found

Компьютер говорит: «нет программы с именем maek». Это значит, что первое слово (имя программы) написано с ошибкой или такой программы нет. Здесь опечатка в make, но даже без неё урок один: первое слово команды - это всегда имя программы, и компьютер ищет его в своём ящике инструментов.

NOTE

Привыкай читать ошибки целиком, а не закрывать в панике. Английский текст можно скопировать и перевести или загуглить - почти на любую ошибку давно есть объяснение. Разбору ошибок и тому, как из них выбираться, посвящён отдельный модуль курса - «Когда что-то сломалось».


Попробуй сам

Потренируйся разбирать команды на части прямо в терминале:

  1. Запусти ls без ничего, потом ls -l. Сравни: одна программа, но флаг -l поменял вид вывода.
  2. Запусти ls -l / (аргумент / - это самая верхняя папка компьютера, корень). Посмотри: тот же подробный вид, но для другой папки.
  3. Намеренно сделай опечатку: напечатай lss. Прочитай ответ command not found и найди в нём имя программы, на которое пожаловался компьютер.
  4. Сделай опечатку в аргументе: cd nesuschestvuet. Прочитай ошибку no such file or directory и найди в ней проблемное имя.

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


Проверка знанийKnowledge check
Тебе дали команду ls -l /home и попросили объяснить, из каких частей она состоит и что делает каждая. Разбери её. И отдельно: если вместо результата ты увидел строку «ls: cannot access '/home': No such file or directory» - что это сообщение говорит и как его читать?
ОтветAnswer
Разбор команды ls -l /home на три части: (1) ls - имя программы, главное слово, действие «показать содержимое папки»; это первый инструмент, который компьютер достаёт и запускает. (2) -l - флаг (опция), начинается с дефиса, меняет поведение: показывает список подробно, в столбик, с деталями (права, владелец, размер, дата). (3) /home - аргумент, то, на что направлено действие, то есть какую именно папку показать. Части разделяются пробелами. В сумме: «покажи подробно содержимое папки /home». Чтение ошибки ls: cannot access '/home': No such file or directory читается слева направо: жалуется программа ls; проблема - не может получить доступ, нет такого файла или папки; проблемное имя - /home (на этой системе такой папки, видимо, нет, например на macOS домашние папки лежат в /Users, а не /home). Ошибка - это подсказка, а не ругань: она прямо называет, кто сообщает, в чём проблема и на каком имени споткнулась.

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

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. В команде ls -l /home какая часть является флагом и что флаг обычно делает?

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

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

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

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