К основному контенту
secenta
СтатьяБесплатный урок5 мин

Что такое оболочка и зачем командная строка

Знакомство с понятиями терминала, оболочки и bash; чем CLI лучше графического интерфейса; первый сеанс работы.

текстТерминал, оболочка и ядро: кто за что отвечает

Три слоя, которые часто путают

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

Ядро (kernel) — это центральная часть Linux. Оно управляет оборудованием, памятью, процессами, файловой системой и сетью. С ядром напрямую вы почти никогда не разговариваете: между вами и им всегда есть посредники.

Оболочка (shell) — программа, которая читает то, что вы вводите, разбирает это как команды и просит ядро их выполнить. Оболочка — это интерпретатор: она понимает синтаксис команд, переменные, кавычки, перенаправления и циклы. Самая распространённая оболочка в Linux называется bash (Bourne Again SHell). Существуют и другие: sh, zsh, fish, dash, но в этом курсе мы изучаем bash, так как он установлен почти везде и является фактическим стандартом.

Терминал (terminal emulator) — это окно (программа), в котором отображается текст и принимается ваш ввод с клавиатуры. Терминал сам по себе ничего не выполняет: он лишь показывает то, что выводит оболочка, и передаёт оболочке ваши нажатия клавиш. GNOME Terminal, Konsole, xterm, Windows Terminal — всё это эмуляторы терминала.

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

Почему командная строка не устарела

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

  • Точность и воспроизводимость. Команда cp report.txt /backup/ делает ровно одно и то же каждый раз. Её можно записать, переслать коллеге, вставить в скрипт. Описать словами последовательность кликов мышью гораздо сложнее.
  • Автоматизация. Любую команду можно положить в скрипт и выполнять по расписанию. Графический интерфейс автоматизировать почти невозможно.
  • Удалённая работа. Серверы обычно не имеют монитора и графической оболочки. Вы подключаетесь к ним по SSH и видите только командную строку. Для системного администратора и DevOps-инженера это рабочая среда по умолчанию.
  • Композиция. Маленькие утилиты в Linux умеют объединяться в цепочки (конвейеры). Из десятка простых команд можно собрать решение, которого нет ни в одной программе с кнопками.

Типичное заблуждение

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

Мини-итог. Терминал показывает текст, оболочка (bash) интерпретирует команды, ядро выполняет работу с железом. CLI ценят за точность, автоматизацию, удалённую работу и возможность собирать команды в цепочки.

текстПервый сеанс: приглашение, команды и аргументы

Анатомия приглашения (prompt)

Когда оболочка готова принять команду, она печатает приглашение. Типичный вид:

код1 строк
1
user@host:~$

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

  • user — имя пользователя, под которым вы работаете.
  • host — имя машины (hostname).
  • ~ — текущий каталог. Тильда ~ — сокращение для домашнего каталога пользователя (например, /home/user).
  • $ — символ, означающий, что вы обычный пользователь. Если бы вы были суперпользователем root, здесь стоял бы #. Это важный визуальный сигнал: # значит «осторожно, у меня максимальные права».

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

Структура команды

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

код1 строк
1
команда [опции] [аргументы]

Пример:

код1 строк
1
ls -l /etc

Здесь ls — команда (вывести список файлов), -lопция (флаг), включающая подробный формат, /etcаргумент (что именно показать). Опции почти всегда начинаются с дефиса. Короткие опции — один дефис и одна буква (-l), длинные — два дефиса и слово (--all). Короткие опции часто можно склеивать: ls -la равно ls -l -a.

Важно: bash разделяет слова по пробелам. Поэтому имя файла с пробелом нужно либо заключать в кавычки ("my file.txt"), либо экранировать пробел обратным слешем (my\ file.txt). Это источник едва ли не самой частой ошибки новичка.

Несколько безопасных команд для старта

  • whoami — под каким пользователем вы работаете.
  • pwd — печатает полный путь текущего каталога.
  • date — текущие дата и время.
  • echo Привет — выводит переданный текст. echo пригодится постоянно.
  • man ls — открывает руководство (manual) по команде ls. Листать стрелками или PageUp/PageDown, выход — клавиша q. Это ваш главный справочник: почти у каждой команды есть man-страница.

Горячие клавиши, которые экономят часы

  • Tab — автодополнение имён команд и файлов. Нажали часть имени — Tab допишет остальное или покажет варианты. Используйте постоянно: это и быстрее, и защищает от опечаток.
  • Стрелка вверх / вниз — листание истории ранее введённых команд.
  • Ctrl+C — прервать выполняющуюся команду.
  • Ctrl+L — очистить экран (то же, что команда clear).
  • Ctrl+A / Ctrl+E — переместить курсор в начало / конец строки.

Частые ошибки новичка

  1. command not found — опечатка в имени команды или программа не установлена. Проверьте написание, попробуйте Tab-дополнение.
  2. Забытые кавычки вокруг имени с пробелом — оболочка воспримет это как два аргумента.
  3. Ввод пароля «не печатается». Когда система просит пароль (например, для sudo), символы намеренно не отображаются — даже звёздочки. Это нормально: печатайте вслепую и жмите Enter.

Мини-итог. Команда = имя + опции + аргументы, разделённые пробелами. $ — обычный пользователь, # — root. Tab-дополнение и история команд — главные ускорители. man — встроенный справочник по любой команде.

Обсуждение

Задавайте вопросы — преподаватели и сокурсники ответят.

0 тем

Здесь пока тихо. Задайте первый вопрос — это поможет другим.