1. Устройство Linux и первые шаги в терминале
Устройство Linux и первые шаги в терминале
Представьте, что вы купили огромный современный завод, но вместо привычного пульта управления с кнопками и экранами вам выдали печатную машинку. Чтобы запустить конвейер или проверить склад, вам нужно не кликать мышкой, а отправлять текстовые депеши. Именно так чувствует себя новичок, впервые открывший терминал Linux. Однако за этой кажущейся архаичностью скрывается мощь, позволяющая управлять серверами в Антарктиде или суперкомпьютерами, не отрывая рук от клавиатуры.
Философия Linux и роль ядра
В основе Linux лежит кардинально иной подход к взаимодействию с «железом», чем в Windows или macOS. Если в бытовых ОС интерфейс — это и есть система, то в Linux графическая оболочка — лишь одна из многих программ, которую можно выключить, заменить или вообще не устанавливать. Сердцем всего является Ядро (Kernel).
Ядро — это главный распорядитель ресурсов. Оно решает, какой программе выделить память, как записать файл на диск и как передать сигнал от клавиатуры к приложению. Вы никогда не взаимодействуете с ядром напрямую. Между вами и ядром стоит Шелл (Shell) или командная оболочка.
> Шелл — это интерпретатор, который переводит ваши текстовые команды в понятный ядру язык системных вызовов. Самая популярная оболочка, ставшая стандартом де-факто, называется Bash (Bourne Again Shell). > > The Linux Documentation Project
Когда вы вводите команду в черном окне терминала, происходит магия: шелл находит нужную программу на диске, просит ядро запустить её, передает ей ваши параметры и выводит результат обратно на экран. Это позволяет строить цепочки управления, недоступные в графическом интерфейсе. Например, системный администратор может одной строчкой текста найти все файлы, измененные за последние 5 минут, и отправить их в архив, в то время как в обычном проводнике это потребовало бы десятков кликов.
Анатомия командной строки
Работа в терминале — это не заучивание заклинаний, а освоение грамматики. Почти любая команда в Linux строится по единому шаблону: команда -опции аргументы.
ls (list) — показать список файлов.-l (long) заставит ls показать подробную информацию: размер, дату и права.ls аргументом может быть путь к папке, которую нужно осмотреть.Рассмотрим это на практике. Если вы просто введете ls, вы увидите список имен файлов. Но если вы введете ls -lh /var/log, система покажет содержимое системного журнала в «человекочитаемом» виде (флаг h — human-readable), отображая размеры файлов в мегабайтах и гигабайтах, а не в байтах.
Важно понимать, что в Linux регистр имеет значение. Файл Document.txt и document.txt — это два абсолютно разных объекта. Это часто сбивает с толку пользователей Windows, где система игнорирует разницу между большой и маленькой буквой в именах.
Первое знакомство: навигация и ориентация
В терминале у вас нет курсора мыши, который показывает, где вы находитесь. Вашим «местоположением» является Текущая рабочая директория (PWD). Вы всегда находитесь «внутри» какой-то папки.
Для базовой ориентации используются три «кита» навигации:
pwd (print working directory) — отвечает на вопрос «Где я?». Она выведет полный путь, например /home/user/documents.ls (list) — отвечает на вопрос «Что здесь есть?».cd (change directory) — позволяет переместиться в другое место.Особое внимание стоит уделить символу «тильда» (~). В Linux это сокращение для вашей Домашней директории. Это ваше личное пространство, где хранятся ваши документы и настройки. Команда cd ~ или просто cd без аргументов всегда вернет вас «домой», в какой бы части системы вы ни заплутали.
Еще один важный концепт — Пути. Они бывают абсолютными и относительными. Абсолютный путь всегда начинается от корня системы (символ /) и похож на полный почтовый адрес: /home/user/photos/cat.jpg. Относительный путь отсчитывается от того места, где вы находитесь сейчас. Если вы уже в папке photos, вам достаточно написать cd .., чтобы подняться на уровень выше. Точка с запятой . означает текущую папку, а две точки .. — родительскую.
Пошаговый разбор: создание структуры проекта
Давайте разберем, как профессионал создает рабочее пространство для нового проекта, используя только терминал. Допустим, нам нужно создать папку для сайта, внутри которой будут папки для стилей и картинок, а также пустой файл индекса.
Шаг 1: Создание дерева папок.
Вместо того чтобы создавать каждую папку отдельно, мы используем команду mkdir (make directory) с флагом -p (parents).
mkdir -p my_project/assets/{css,images,js}
Здесь фигурные скобки — это мощный инструмент шелла (brace expansion). Эта команда создаст сразу всю структуру: папку my_project, в ней assets, а внутри неё — три подпапки.
Шаг 2: Переход в рабочую область.
cd my_project
Теперь наша рабочая директория изменилась. Мы «вошли» внутрь проекта.
Шаг 3: Создание пустого файла.
touch index.html
Команда touch изначально предназначена для обновления времени изменения файла, но если файла не существует, она его создает. Это самый быстрый способ сделать «заготовку».
Шаг 4: Проверка результата.
ls -R
Флаг -R (recursive) заставит систему показать не только файлы в текущей папке, но и заглянуть во все вложенные директории. Мы увидим наше дерево во всей красе.
Шаг 5: Удаление (с осторожностью).
Если мы решим, что папка js нам не нужна, мы используем rmdir assets/js. Но помните: в терминале нет «Корзины». Команда rm удаляет файлы безвозвратно. Ошибка в одном символе может стоить вам всех данных.
Справка и самообучение: как не утонуть
Ни один системный администратор не помнит все флаги всех команд. Главный навык в Linux — умение пользоваться встроенной документацией. Для этого существует команда man (manual).
Если вы напишете man ls, откроется подробная энциклопедия по этой команде. Там описаны все возможные опции, автор программы и примеры использования. Чтение мануалов — это признак профессионализма, а не слабости.
Помимо man, часто помогает флаг --help. Например, mkdir --help выдаст краткую справку прямо в консоль, не открывая отдельное окно документации. Если же вы забыли название команды, но помните, что она делает, поможет apropos. Команда apropos "copy files" подскажет, что вам, скорее всего, нужна утилита cp.
Если из этой главы запомнить три вещи — это: