Для работы с командной строкой понадобятся две вещи:

  1. Терминал
  2. Командный интерпретатор

Терминал

Терминал

Терминалом называют программу, которая эмулирует поведение "железного" терминала, состоящего из клавиатуры и монитора. В простейшем случае — это просто окошко с командной строкой внутри. Хороший терминал всё же не ограничивается одним окном, а позволяет открывать новые терминалы в табах — по такому же принципу, как работают вкладки в браузере. Такая функция есть в терминалах, идущих в составе Ubuntu и MacOS. Терминал Windows не умеет ровным счётом ничего и нуждается в замене.

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

Сплиты в Iterm2

Хорошие терминалы также умеют восстанавливать завершённую сессию, создавать профайлы под разные задачи и многое другое.

Командный интерпретатор

У этого понятия множество синонимов, среди них shell ("шелл"), командная оболочка и командный процессор. Командная оболочка — программа, через которую происходит управление операционной системой и установленными программами, используя командную строку. Оболочка отличается от большинства других программ тем, что она является лишь средством для выполнения определённых задач, а не самой задачей. Shell запускается внутри терминала и приглашает к вводу команд.

~$ █

Каждая строка, передаваемая пользователем системе — это команда, которую та должна выполнить. После ввода команды обязательно нажать Enter, только в этом случае она отправится на исполнение. До этого момента её можно редактировать.

Символ $ используется как разделитель. Слева от него — настраиваемое сообщение для вывода, обычно текущая директория, а справа — то, что вводится пользователем. Ниже пример использования команды date, которая выводит текущую дату.

$ date
Sun Aug 26 14:02:59 CEST 2018
$ █

Terminal

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

$ # я комментарий
$ █

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

Командная оболочка и терминал — не одно и тоже. Терминал — это программа, которая запускает командную оболочку внутри себя.

Как вы увидите далее, shell — это полноценная среда программирования, а многие команды являются стандартными конструкциями любого языка программирования, такими как переменные, циклы или условия. Кроме того, некоторые команды являются программами, а некоторые — нет. В ближайших уроках для простоты я буду говорить слово "команда", но потом объясню разницу

Командную оболочку нередко называют реплом (REPL, Read-Eval-Print-Loop), что отражается в способе взаимодействия с пользователем:

  1. Read — шелл ждёт ввода команды от пользователя
  2. Eval — шелл исполняет введённую команду
  3. Print — шелл выводит результат
  4. Loop — возвращаемся к первому пункту

Этот процесс называется интерактивной сессией: после загрузки шелл ждёт ввода команды, затем он её исполняет, выводит результат и снова ждёт выполнения команды. Так происходит до тех пор, пока не будет дана команда на выход из терминала или выключение компьютера. REPL — широко распространённый способ взаимодействия с пользователем. В следующих курсах вы увидите, что он есть и у баз данных, и у языков программирования.

Для вашего удобства, в среде Хекслета сразу запущено два терминала, которыми можно и нужно пользоваться, выполняя упражнения к урокам. Терминалы доступны в нижних вкладках (там, где описание задачи) под именами Terminal 1 и Terminal 2.

Во время изучения и экспериментов достаточно легко допустить ошибки. Всегда внимательно читайте вывод, в случае паники переоткройте терминал. Это позволит начать всё с чистого листа (если, конечно, не было произведено деструктивных действий).

Самостоятельная работа

  1. Установите хороший терминал под вашу операционную систему, если его нет.
  2. Убедитесь, что внутри запускается баш сессия. Сделать это можно так:

    $ echo $SHELL;
    /bin/bash # - это вывод команды, введенной выше
    

Дополнительные материалы

  1. Гайд по настройке Windows для работы в командной строке