package linuxmodules import ( "fmt" "rubric/utils" ) var IntroModule = Module{ Key: "intro", Aliases: []string{"i", "os", "начало"}, Title: "Введение. ОС и GNU/Linux", Description: "Темы 01, 04, 05: операционные системы, файловые системы, терминал", Run: showIntro, } func showIntro() { utils.Header("Linux — Введение. ОС и GNU/Linux") // ─── 01. Операционные системы и GNU/Linux ───────────────────── utils.Section("01. Операционные системы и GNU/Linux") utils.Println("Операционная система (ОС) — программа, управляющая аппаратурой и") utils.Println("предоставляющая среду для работы прикладных программ.") fmt.Println() utils.Println(utils.ColorBold + "Ключевые понятия:" + utils.ColorReset) utils.Code(`Ядро (kernel) — центральная часть ОС, управляет памятью, процессами, устройствами. Userspace — пространство пользователя, где работают обычные программы. Дистрибутив — ядро Linux + набор программ + система управления пакетами (Debian, Ubuntu, RHEL, Fedora, Arch...).`) utils.Println(utils.ColorBold + "История:" + utils.ColorReset) utils.Code(`1969 — AT&T Bell Labs: UNIX (Ричи, Томпсон) 1983 — Ричард Столлман: проект GNU (свободное ПО) 1991 — Линус Торвальдс: ядро Linux (v0.01) = GNU/Linux: ядро Linux + утилиты GNU POSIX — стандарт совместимости UNIX-подобных систем`) utils.Println(utils.ColorBold + "GNU/Linux vs другие ОС:" + utils.ColorReset) utils.Code(`Linux Windows macOS ───────────────────────────────────────────── Открытый код Закрытый Частично открытый Бесплатно Платный Платный (только на Mac) Пакетный менеджер Магазин/exe App Store/Homebrew Множество дистро Одна система Одна система Сильный CLI GUI-ориентирован CLI через zsh/bash`) utils.Note("Серверы: >90% работают на Linux. Android — ядро Linux. Суперкомпьютеры: 100% Linux.") utils.Note("RHEL (Red Hat Enterprise Linux) — коммерческий дистрибутив; RHCSA — его сертификация.") // ─── 04. О файловых системах ────────────────────────────────── utils.Section("04. О файловых системах") utils.Println("Файловая система (ФС) — способ организации хранения данных на диске.") fmt.Println() utils.Println(utils.ColorBold + "Популярные файловые системы Linux:" + utils.ColorReset) utils.Code(`ext4 — стандарт для большинства дистрибутивов, журналирование, поддержка файлов до 16 ТБ xfs — высокая производительность, RHEL по умолчанию, хорошо для больших файлов btrfs — Copy-on-Write, снапшоты, сжатие vfat — совместимость с Windows (флешки, EFI-раздел) ntfs — чтение/запись Windows-разделов (ntfs-3g) tmpfs — виртуальная ФС в оперативной памяти (/tmp, /run) proc — виртуальная ФС, информация о процессах (/proc) sysfs — виртуальная ФС, информация об устройствах (/sys)`) utils.Println(utils.ColorBold + "Структура файловой системы Linux (FHS):" + utils.ColorReset) utils.Code(`/ — корень, начало всего дерева ├── bin/ — основные бинарные файлы (ls, cp, mv...) ├── sbin/ — системные бинарники (root: fdisk, mount...) ├── etc/ — конфигурационные файлы ├── home/ — домашние директории пользователей ├── root/ — домашняя директория root ├── var/ — изменяемые данные (логи, кэш, БД) ├── tmp/ — временные файлы (очищается при перезагрузке) ├── usr/ — пользовательские программы и данные │ ├── bin/ — программы пользователя │ ├── lib/ — библиотеки │ └── share/ — разделяемые данные ├── lib/ — системные библиотеки ├── dev/ — файлы устройств (sda, tty, null...) ├── proc/ — виртуальная ФС: инфо о процессах и ядре ├── sys/ — виртуальная ФС: инфо об устройствах ├── run/ — данные запущенных процессов (PID-файлы) ├── boot/ — загрузчик, ядро (vmlinuz, initrd) ├── mnt/ — точки монтирования (временные) └── media/ — автомонтирование съёмных носителей`) utils.Note("В Linux всё — файл: устройства, сокеты, каналы, процессы.") utils.Note("Нет буквы диска (C:, D:). Всё монтируется в единое дерево с корнем /") utils.Println(utils.ColorBold + "Типы файлов:" + utils.ColorReset) utils.Code(`- обычный файл (ls показывает -) d директория (ls показывает d) l символическая ссылка (ls показывает l) b блочное устройство (/dev/sda) c символьное устройство (/dev/tty) p именованный канал (FIFO) s сокет`) // ─── 05. Текстовый интерфейс пользователя ──────────────────── utils.Section("05. Текстовый интерфейс пользователя (CLI)") utils.Println("Shell (оболочка) — интерпретатор команд между пользователем и ядром.") fmt.Println() utils.Println(utils.ColorBold + "Оболочки:" + utils.ColorReset) utils.Code(`bash — Bourne Again Shell, стандарт в большинстве дистро zsh — расширенный bash, Oh My Zsh, популярен у разработчиков sh — POSIX sh (минималистичный, для скриптов) fish — дружелюбный, автодополнение из коробки`) utils.Println(utils.ColorBold + "Приглашение командной строки (prompt):" + utils.ColorReset) utils.Code(`user@hostname:~$ — обычный пользователь root@hostname:~# — суперпользователь (root) user — имя пользователя hostname — имя машины ~ — текущая директория (~ = домашняя) $ — не root; # — root`) utils.Println(utils.ColorBold + "Базовые горячие клавиши:" + utils.ColorReset) utils.Code(`Tab — автодополнение команд и путей Tab Tab — показать все варианты ↑ / ↓ — история команд Ctrl+C — прервать текущую команду (SIGINT) Ctrl+Z — приостановить процесс (SIGTSTP) Ctrl+D — закрыть сессию / конец ввода (EOF) Ctrl+L — очистить экран (= clear) Ctrl+A — в начало строки Ctrl+E — в конец строки Ctrl+R — поиск по истории команд Ctrl+U — удалить строку до курсора Ctrl+W — удалить слово влево`) utils.Println(utils.ColorBold + "Полезные команды общего назначения:" + utils.ColorReset) utils.Command("man команда", "страница руководства (q — выход, /текст — поиск)") utils.Command("info команда", "расширенная документация GNU") utils.Command("команда --help", "краткая справка") utils.Command("type команда", "что такое команда (alias/builtin/файл)") utils.Command("which команда", "полный путь к исполняемому файлу") utils.Command("whereis команда", "бинарник, исходник и man-страница") utils.Command("history", "история команд") utils.Command("history 20", "последние 20 команд") utils.Command("!42", "выполнить команду №42 из истории") utils.Command("!!", "повторить последнюю команду") utils.Command("clear", "очистить экран") utils.Command("exit", "выйти из сессии") utils.Command("echo $SHELL", "какая оболочка используется") fmt.Println() utils.Code(`# Запуск нескольких команд: cmd1 ; cmd2 — выполнить последовательно (всегда) cmd1 && cmd2 — cmd2 только если cmd1 успешна cmd1 || cmd2 — cmd2 только если cmd1 неуспешна cmd1 | cmd2 — передать вывод cmd1 на вход cmd2 (pipe)`) utils.Note("Виртуальные консоли: Alt+F1..F6 в Linux. В X11 — Ctrl+Alt+F1..F6. Вернуться: Ctrl+Alt+F7.") utils.Footer() }