rubric/modules/linuxmodules/linux_intro.go
2026-04-06 11:02:36 +03:00

161 lines
10 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
}