161 lines
10 KiB
Go
Executable file
161 lines
10 KiB
Go
Executable file
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()
|
||
}
|