open atlas
↑ К треку
Командная строка CLI · 01 · 01

Что такое терминал?

Эмулятор терминала — это окно; оболочка — программа внутри него, которая читает команды и выполняет их. Приглашение — это сигнал оболочки, что она ждёт ввода.

CLI Основы ◷ 15 min
Уровень
ОсновыJuniorMiddleSenior

Ты открываешь приложение и видишь мигающий курсор на чёрном фоне. Вводишь ls — экран заполняется именами файлов. Вводишь rm -rf — что-то важное исчезает навсегда. Что это за окно и что за программа читает твои нажатия клавиш? Знать ответ — значит разница между уверенной работой в терминале и страхом перед ним.

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

Цель

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

1

Эмулятор терминала — это просто окно, отображающее текст. В 1960–1980-е годы «терминал» был физическим устройством — клавиатурой и экраном, подключёнными кабелем к удалённому мейнфрейму. Современные компьютеры достаточно мощны, чтобы запускать всё локально, поэтому физический терминал заменили эмулятором терминала: приложением (GNOME Terminal, iTerm2, Windows Terminal), которое рисует текстовое окно и передаёт нажатия клавиш программе, работающей внутри. Сам эмулятор терминала команды не понимает. Он только отображает символы и передаёт ввод дальше.

2

Оболочка — это программа, которая на самом деле читает и выполняет команды. Когда эмулятор терминала запускается, он запускает оболочку (shell) — текстовую программу, которая ждёт твоего ввода, интерпретирует набранное как команду, просит операционную систему её выполнить и выводит результат обратно в терминал. Самая распространённая оболочка на Linux — bash (Bourne Again SHell). Есть и другие: zsh (по умолчанию на macOS с 2019 года), fish, dash. Именно оболочку ты изучаешь, когда изучаешь командную строку; эмулятор терминала — лишь контейнер.

3

Приглашение — это сигнал оболочки: можно вводить. После запуска оболочки — и после завершения каждой команды — она печатает строку, называемую приглашением (prompt), и ждёт. Типичное приглашение bash выглядит так:

user@hostname:~$

Каждая часть несёт смысл: user — твоё имя пользователя, hostname — имя машины, ~ — сокращение для домашнего каталога (текущее местоположение), а $ сигнализирует, что ты обычный пользователь (root использует #). Ты вводишь команду после $ и нажимаешь Enter; оболочка читает её, выполняет и снова печатает приглашение.

Почему это работает

macOS поставляется с zsh, и её приглашение по умолчанию отличается от примера с bash выше. Концепции — эмулятор терминала, оболочка, приглашение — идентичны; различаются лишь текст по умолчанию и цвета. В этом юните используется синтаксис bash/POSIX, который работает в zsh без изменений для базовых команд, рассматриваемых здесь.

4

Оболочка — это полноценная среда программирования, а не просто запускатель. Оболочки поддерживают переменные, условия, циклы и функции. Одна строка команды может объединить несколько программ, перенаправить вывод в файл и обработать текст — без единой строки Python или JavaScript. Вся эта мощь живёт в слое оболочки, а не в эмуляторе терминала. Смена эмулятора меняет то, как выглядит текст; смена оболочки меняет то, какие команды можно писать и как.

Разбор примера

Чтение приглашения.

Представь, что ты открываешь терминал и видишь:

alice@devbox:~/projects$

Разбираем по частям:

  • alice — ты вошёл как пользователь alice
  • devbox — имя хоста машины — devbox
  • ~/projects — текущий каталог — projects внутри домашней папки
  • $ — ты обычный (не root) пользователь

Ты вводишь ls и нажимаешь Enter. Оболочка просит ОС перечислить текущий каталог, ОС возвращает имена файлов, оболочка их выводит, и снова появляется приглашение — готово к следующей команде. Эмулятор терминала просто нарисовал символы; вся работа была сделана оболочкой и ОС.

Частая ошибка

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

Проверь себя
Викторина

Ты вводишь команду в окне терминала и нажимаешь Enter. Какой слой на самом деле интерпретирует команду и просит ОС её выполнить?

Итог

Эмулятор терминала — это приложение, которое рисует текстовое окно и подключает тебя к оболочке. Оболочка — bash, zsh или другая — это программа, которая читает твои команды, просит операционную систему их выполнить и выводит результаты. Приглашение — строка, которую оболочка печатает между командами, сигнализируя, что ждёт ввода. Эмулятор терминала взаимозаменяем; оболочка — там живёт настоящая мощь. Теперь, открывая терминал, ты точно знаешь, что видишь и какой слой что делает.

Практика

Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.

вспомнитьприменитьуглубить0 из 4 завершено

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.