Три слоя, которые часто путают
Когда новичок впервые видит чёрное окно с мигающим курсором, он обычно называет всё это «терминалом» или «консолью». На самом деле здесь работают три разные сущности, и понимать различие между ними важно, потому что ошибки и настройки относятся к разным слоям.
Ядро (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)
Когда оболочка готова принять команду, она печатает приглашение. Типичный вид:
Разберём по частям:
user— имя пользователя, под которым вы работаете.host— имя машины (hostname).~— текущий каталог. Тильда~— сокращение для домашнего каталога пользователя (например,/home/user).$— символ, означающий, что вы обычный пользователь. Если бы вы были суперпользователем root, здесь стоял бы#. Это важный визуальный сигнал:#значит «осторожно, у меня максимальные права».
Приглашение полностью настраивается через переменную PS1, к которой мы вернёмся в модуле про окружение.
Структура команды
Любая команда в bash разбирается по простому правилу: первое слово — это имя команды, остальные слова — её аргументы, разделённые пробелами.
Пример:
Здесь 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 — переместить курсор в начало / конец строки.
Частые ошибки новичка
command not found— опечатка в имени команды или программа не установлена. Проверьте написание, попробуйте Tab-дополнение.- Забытые кавычки вокруг имени с пробелом — оболочка воспримет это как два аргумента.
- Ввод пароля «не печатается». Когда система просит пароль (например, для
sudo), символы намеренно не отображаются — даже звёздочки. Это нормально: печатайте вслепую и жмите Enter.
Мини-итог. Команда = имя + опции + аргументы, разделённые пробелами. $ — обычный пользователь, # — root. Tab-дополнение и история команд — главные ускорители. man — встроенный справочник по любой команде.