Модуль 0.2: Що таке термінал?
Складність:
[ШВИДКО]— Для повних новачківЧас на проходження: 20-25 хвилин
Попередні вимоги: Немає. Серйозно, жодних. Якщо ви можете прочитати це речення, ви готові.
Що ви зможете зробити
Розділ «Що ви зможете зробити»Після цього модуля ви зможете:
- Відкрити термінал у вашій операційній системі та розпізнати запит (prompt)
- Запустити базові команди (
echo,date,whoami) та прочитати їхній результат - Пояснити, чому інженери віддають перевагу терміналу перед GUI для роботи з серверами
- Виправити типові помилки новачків (пропущені лапки, завислі запити) за допомогою Ctrl+C
Чому це важливо
Розділ «Чому це важливо»Кожен інструмент у сучасній програмній інженерії — Kubernetes, Docker, хмарні платформи, сценарії автоматизації — починається з одного: терміналу.
Ви могли чути, як люди називають його «командним рядком», «CLI» або «оболонкою» (shell). Це звучить лячно. Це виглядає як щось із фільму про хакерів 1990-х. Але ось правда: це просто ще один спосіб спілкування з вашим комп’ютером, і ви навчитеся цьому прямо зараз.
До кінця цього модуля ви введете свої перші команди. Це все, що потрібно для початку.
Що таке GUI?
Розділ «Що таке GUI?»Почнемо з того, що ви вже знаєте.
Зараз ви дивитеся на екран свого комп’ютера. Ви бачите іконки, вікна, кнопки, меню. Ви натискаєте на елементи мишею. Ви перетягуєте файли в папки. Ви відкриваєте програми одним дотиком.
Це називається GUI — Graphical User Interface (Графічний інтерфейс користувача).
- Graphical (Графічний): Він використовує зображення та візуальні ефекти.
- User (Користувач): Це ви.
- Interface (Інтерфейс): Спосіб вашої взаємодії з комп’ютером.
GUI — це те, як більшість людей використовують комп’ютери щодня. Коли ви відкриваєте веб-браузер, натискаючи на його іконку, — це GUI. Коли ви перетягуєте фотографію в папку — це GUI. Коли ви натискаєте кнопку «Надіслати» в електронному листі — це GUI.
GUI чудові для повсякденних завдань. Вони візуальні, інтуїтивно зрозумілі, і вам не потрібно нічого запам’ятовувати — ви просто вказуєте і натискаєте.
Тож чому комусь може знадобитися щось інше?
Що таке термінал?
Розділ «Що таке термінал?»Термінал (також званий командним рядком або CLI) — це текстовий спосіб спілкування з вашим комп’ютером.
Замість того, щоб натискати на іконки, ви вводите інструкції. Замість того, щоб перетягувати файли, ви пишете команду. Замість того, щоб переміщатися по меню, ви точно кажете комп’ютеру, що робити.
Ось як виглядає термінал:
$Це все. Миготливий курсор, що чекає на вашу інструкцію. Жодних іконок. Жодних кнопок. Тільки ви та комп’ютер у текстовому діалозі.
Коли ми кажемо «CLI», ми маємо на увазі Command Line Interface (Інтерфейс командного рядка):
- Command (Команда): Інструкція, яку ви вводите.
- Line (Рядок): Ви вводите її в текстовому рядку.
- Interface (Інтерфейс): Спосіб вашої взаємодії з комп’ютером.
Аналогія з ресторанною кухнею
Розділ «Аналогія з ресторанною кухнею»Уявіть, що ви в ресторані.
GUI = Замовлення з меню з картинками
Ви дивитеся на глянцеве меню. Ви бачите фото бургера. Ви вказуєте на нього. Офіціант приносить його. Легко! Але ви отримуєте саме те, що на картинці — жодних модифікацій, жодних особливих побажань (ну, можливо, декілька).
Термінал = Пряма розмова з шеф-кухарем
Ви заходите на кухню і кажете: «Я хочу бургер з додатковими маринованими огірками, без цибулі, з підсмаженою булкою, прожарки medium-rare, а фірмовий соус подайте окремо». Шеф-кухар киває і готує саме те, що ви попросили.
Потрібно більше знань, щоб розмовляти з шеф-кухарем — ви повинні знати, що можливо, які слова використовувати. Але ви отримуєте набагато більше контролю і можете точно описати, чого хочете.
Це і є термінал. Більше потужності, більше точності, і як тільки ви вивчите мову, це часто виявляється швидше, ніж вказувати та натискати.
Ми будемо використовувати цю аналогію з ресторанною кухнею протягом цих модулів. Термінал — це ваша кухня. Команди — це ваші рецепти. Ви вчитеся бути шеф-кухарем.
Чому інженери використовують термінали?
Розділ «Чому інженери використовують термінали?»Ви можете подумати: «Якщо GUI простіші, навіщо комусь використовувати термінал?»
Чудове питання. Ось чотири причини:
1. Швидкість
Розділ «1. Швидкість»Перейменування 500 файлів за допомогою GUI означає натискання на кожен з них, клік правою кнопкою миші, вибір «Перейменувати», введення нового імені… 500 разів.
З терміналом? Один рядок:
for f in *.txt; do mv "$f" "backup_$f"; doneЦе перейменовує всі 500 файлів менш ніж за секунду. Одна команда замість 500 кліків.
2. Автоматизація
Розділ «2. Автоматизація»Ви можете зберігати термінальні команди у файлі (званому скриптом — сприймайте це як записаний рецепт) і запускати їх знову і знову. Щоранку о 6:00 автоматично створювати резервні копії ваших файлів. Щоразу, коли ви зберігаєте код, автоматично перевіряти його на помилки. GUI не можуть зробити це так легко.
3. Віддалений доступ
Розділ «3. Віддалений доступ»Більшість серверів (потужних комп’ютерів, на яких працюють веб-сайти та додатки) взагалі не мають екранів, мишей або GUI. Вони стоять у дата-центрах, і єдиний спосіб спілкування з ними — через термінал по інтернету. Якщо ви хочете працювати з серверами — а в Kubernetes ви будете це робити — термінал є вашим єдиним варіантом.
4. Скрипти та повторюваність
Розділ «4. Скрипти та повторюваність»Коли ви натискаєте кнопки в GUI, не залишається запису про те, що ви зробили. Але коли ви вводите команди, у вас є історія. Ви можете поділитися цими командами з колегою. Ви можете їх записати. Ви можете ідеально повторювати їх щоразу.
Зупиніться та подумайте: уявіть, що вам потрібно налаштувати 10 ідентичних серверів для нового додатка. З GUI ви б проходили через ті самі екрани налаштування 10 разів, сподіваючись, що не пропустите жоден прапорець (checkbox) на сервері №7. З терміналом ви пишете команди налаштування один раз, зберігаєте їх у скрипті та запускаєте цей скрипт на всіх 10 серверах. Який підхід з більшою ймовірністю дасть вам 10 ідентичних серверів?
Вартість пропущеного прапорця У 2014 році у великого хмарного провайдера стався масштабний збій через те, що інженер вручну налаштовував групу серверів за допомогою панелі управління GUI. На 42-му сервері з 50 він випадково пропустив один прапорець для критичного налаштування мережі. Ця єдина людська помилка спричинила каскадний збій, що призвів до чотирьох годин простою і зачепив мільйони клієнтів. Якби вони використали термінальний скрипт для застосування конфігурації, ті самі налаштування були б бездоганно застосовані до всіх 50 серверів.
GUI проти Терміналу — чесні компроміси Ми тут багато хвалимо термінал, але GUI дійсно перемагають у кількох сферах. Якщо ви дивитеся на візуальні моніторингові дашборди (як-от Grafana), щоб помітити раптовий стрибок трафіку, редагуєте складні діаграми архітектури або вперше вивчаєте абсолютно новий додаток, GUI значно перевершує термінал. Емпіричне правило: використовуйте GUI для споживання візуальної інформації та початкового ознайомлення; використовуйте термінал для маніпуляцій з текстом, автоматизації та точного виконання.
Чи знали ви?
Розділ «Чи знали ви?»
Перші комп’ютери взагалі не мали екранів. Ранні програмісти використовували перфокарти — буквально шматки картону з дірками — щоб давати інструкції комп’ютерам. Термінал — це сучасний нащадок тих текстових взаємодій. GUI не з’являлися до 1970-х років і не стали масовими до 1980-х з появою Apple Macintosh.
Слово «термінал» походить від назви фізичного пристрою. У 1960-70-х роках «термінал» був реальною машиною — клавіатурою та екраном (або принтером), підключеними до мейнфрейму. Сьогоднішній термінал — це програма, яка імітує той старий пристрій. Його називають «емулятором термінала», тому що він емулює (імітує) оригінальне обладнання.
Більшість інтернету працює на термінальних командах. Сервери, що забезпечують роботу Google, Netflix, Amazon та майже кожного веб-сайту, який ви відвідуєте, керуються через термінали. Системні адміністратори (sysadmins) та інженери вводять команди, щоб ці сервіси працювали 24/7.
Відкриття вашого термінала
Розділ «Відкриття вашого термінала»Зробимо це! Ось як відкрити термінал на вашому комп’ютері:
macOS
Розділ «macOS»- Натисніть Cmd + Space, щоб відкрити Spotlight Search.
- Введіть Terminal.
- Натисніть Enter.
Ви побачите вікно з текстом, що виглядає приблизно так:
Last login: Mon Mar 23 10:15:00 on ttys000yourname@your-mac ~ %На macOS ваш запит (prompt) закінчується на
%(якщо використовується zsh, за замовчуванням) або$(якщо використовується bash). Обидва варіанти підходять.
Windows
Розділ «Windows»Windows має кілька варіантів:
Варіант А: PowerShell
- Натисніть клавішу Windows.
- Введіть PowerShell.
- Натисніть Enter.
Варіант Б: Windows Terminal (рекомендовано, безкоштовно з Microsoft Store)
- Встановіть «Windows Terminal» з Microsoft Store.
- Відкрийте його з меню «Пуск».
Варіант В: WSL (Windows Subsystem for Linux — найкращий варіант для цього курсу)
- Відкрийте PowerShell від імені адміністратора.
- Введіть:
wsl --install - Перезавантажте комп’ютер.
- Відкрийте «Ubuntu» з меню «Пуск».
Для курсу KubeDojo рекомендується використовувати WSL на Windows, оскільки інструменти Kubernetes найкраще працюють у середовищі Linux. Не турбуйтеся про це зараз — просто використовуйте будь-який термінал, який ви можете відкрити сьогодні.
Linux
Розділ «Linux»- Натисніть Ctrl + Alt + T.
Зазвичай це все! Якщо це не спрацювало, шукайте «Terminal» у меню ваших додатків.
Пояснення запиту (prompt)
Розділ «Пояснення запиту (prompt)»Коли ви відкриєте термінал, ви побачите щось на кшталт цього:
yourname@yourcomputer ~ $Це називається запитом (prompt). Це термінал каже: «Я готовий. Що ти хочеш, щоб я зробив?»
Давайте розберемо його:
| Частина | Значення | Аналогія |
|---|---|---|
yourname | Ваше ім’я користувача на комп’ютері | Ваш бейдж на кухні |
@ | ”at” (на) | — |
yourcomputer | Назва вашого комп’ютера | Назва ресторану |
~ | Ваше поточне місцезнаходження | В якій кімнаті кухні ви перебуваєте |
$ або % | «Я готовий до вашої команди» | Шеф-кухар каже: «Замовлення прийнято — що вам потрібно?» |
Символ $ (або % на macOS) — найважливіша частина. Це означає: термінал чекає, поки ви щось надрукуєте.
У цьому курсі, коли ви бачите
$на початку рядка, це означає «надрукуйте те, що йде після нього». Ви не повинні друкувати сам$, він просто показує запит.
Наприклад, коли ви бачите:
$ echo "Hello"Ви вводите: echo "Hello" і натискаєте Enter. Ви не друкуєте $.
Ваша перша команда
Розділ «Ваша перша команда»Готові? Давайте введемо вашу найпершу термінальну команду.
Зупиніться та подумайте: Як ви гадаєте, що зробить
echo "Hello, World!"? Команда називаєтьсяecho— як луна в каньйоні. Спробуйте вгадати перед тим, як запустити її.
У своєму терміналі введіть це і натисніть Enter:
$ echo "Hello, World!"Ви повинні побачити:
Hello, World!Вітаємо! Ви щойно запустили команду!
Давайте розберемося, що сталося:
echo— це команда. Вона каже комп’ютеру: «Повтори за мною те, що я тобі дам». Сприймайте це як луну в каньйоні — ви щось вигукуєте, і воно повертається до вас."Hello, World!"— це аргумент, тобто те, що ви даєте команді. Це те, що ви хочете почути у відповідь.
У нашій ресторанній аналогії:
echo— це як сказати шеф-кухареві: «Повторіть моє замовлення». А"Hello, World!"— це саме замовлення.
Ще кілька команд для спроби
Розділ «Ще кілька команд для спроби»Спробуйте ще кілька. Вводьте кожну і натискайте Enter:
Яка сьогодні дата?
$ dateВи повинні побачити щось на кшталт:
Mon Mar 23 14:30:00 UTC 2026Команда date запитує ваш комп’ютер: «Який зараз час і дата?»
Під яким користувачем я увійшов?
$ whoamiВи повинні побачити своє ім’я користувача:
yournameКоманда whoami запитує: «Який я користувач?». Це може здатися безглуздим на вашому особистому комп’ютері, але коли ви заходите на віддалені сервери, насправді дуже корисно перевірити, під ким ви авторизувалися.
На якому комп’ютері я перебуваю?
$ hostnameВи повинні побачити назву свого комп’ютера:
your-mac.localРозуміння структури команд
Розділ «Розуміння структури команд»Кожна команда відповідає шаблону:
команда [опції] [аргументи]| Частина | Що це таке | Аналогія з рестораном |
|---|---|---|
| Команда | Дія, яку потрібно виконати | «Приготуйте мені бургер» |
| Опції | Як саме це зробити (зазвичай починаються з -) | «Добре просмажений, з подвійним сиром» |
| Аргументи | З чим або над чим це зробити | «З котлетою з яловичини Ангус» |
Наприклад:
$ echo "Hello"- Команда:
echo(дія: повторити щось) - Аргумент:
"Hello"(що саме повторити)
Ось приклад з опцією:
$ date -u- Команда:
date(дія: показати дату) - Опція:
-u(показати її в часі UTC, а не за вашим місцевим часом)
Не турбуйтеся про запам’ятовування цієї структури. Це стане природним з практикою. Так само, як ви не зазубрювали граматичні правила перед тим, як почати говорити — ви засвоїли їх, використовуючи мову.
Типові помилки
Розділ «Типові помилки»Кожен робить їх на початку. Це абсолютно нормально.
| Помилка | Що відбувається | Як виправити |
|---|---|---|
Введення символу $ | $: command not found або неочікувана поведінка | Не друкуйте $ — він представляє запит, а не є частиною команди |
| Забули натиснути Enter | Нічого не відбувається, команда просто стоїть | Натисніть Enter, щоб запустити команду |
| Одруки в назвах команд | echoo: command not found | Перевірте правопис. Термінал суворий — echoo це не echo |
| Неправильний регістр | Echo: command not found | Більшість команд пишуться малими літерами. echo працює, Echo — ні |
| Забули закрити лапки | Термінал чекає на подальший ввід із символом > | Введіть закриваючі лапки " і натисніть Enter або натисніть Ctrl+C, щоб скасувати |
| Паніка, коли щось виглядає не так | Стрес! | Натисніть Ctrl+C, щоб скасувати майже будь-що. Це ваша кнопка екстреної зупинки |
Ctrl+C — ваш найкращий друг. Якщо щось пішло не так, якщо термінал здався завислим, якщо ви випадково запустили щось, чого не хотіли — натисніть Ctrl+C. Це скасовує поточну операцію. Сприймайте це як вогнегасник на кухні. Завжди під рукою.
Типові помилки в робочому середовищі (Production)
Розділ «Типові помилки в робочому середовищі (Production)»Коли ви переходите від навчання до роботи на реальних серверах, ставки зростають. Ось помилки, які трапляються в реальному світі:
| Помилка в продакшні | Реальні наслідки | Як запобігти |
|---|---|---|
| Запуск команди не на тому сервері, бо ви не прочитали запит (prompt) | Видалення бази даних продакшну замість тестової (Це реально сталося в GitLab у 2017 році, що призвело до величезної втрати даних). | Завжди двічі перевіряйте username@hostname у вашому запиті перед натисканням Enter для руйнівної команди. |
| Копіювання та вставка кількох рядків команд з інтернету прямо в термінал | Термінал може негайно виконати приховані шкідливі команди або неповні команди. | Спочатку вставте текст у простий текстовий редактор, перевірте, що саме роблять команди, а потім копіюйте їх у термінал. |
| Запуск скрипта без попереднього тестування | Невеликий одрук в автоматизованому скрипті виводить з ладу 50 серверів одночасно замість одного. | Тестуйте скрипти на одному сервері, який не є частиною продакшну (тестове середовище), перш ніж запускати їх скрізь. |
Контрольні запитання
Розділ «Контрольні запитання»Тестуйте своє розуміння! Спробуйте відповісти перед тим, як відкрити рішення.
Запитання 1: Ви випадково запустили команду, яка виводить нескінченні рядки тексту на екран, і ви не можете нічого надрукувати. Яким буде ваш негайний наступний крок і чому?
Показати відповідь
Вам слід негайно натиснути Ctrl+C. Це універсальний сигнал «припини те, що робиш» у терміналі. Коли ви натискаєте цю комбінацію клавіш, вона надсилає сигнал переривання (interrupt signal) запущеному процесу, наказуючи йому негайно завершитися. Це важливо, тому що дає вам надійний шлях до відступу, якщо команда зависає, виконується занадто довго або починає робити те, чого ви не планували. Знання того, що ви завжди можете зупинити процес, дає вам впевненість для безпечного дослідження та навчання.
Запитання 2: Ви намагаєтеся вивести абзац тексту за допомогою echo, але після натискання Enter термінал просто показує символ > на новому рядку замість вашого звичайного запиту. Що, швидше за все, сталося і як вирішити цю ситуацію?
Показати відповідь
Ви, ймовірно, забули закриваючі лапки (" або '). Термінал відображає символ >, тому що вважає вашу команду ще не завершеною і чекає, поки ви закінчите введення текстового рядка. Щоб виправити це, ви можете просто ввести відсутні лапки та натиснути Enter для завершення команди, або натиснути Ctrl+C, щоб скасувати все і почати заново з чистим запитом. Це часто трапляється при роботі з текстовими аргументами, тому розпізнавання символу > вбереже вас від зайвої паніки.
Запитання 3: Ви перемикаєтеся між декількома вікнами термінала, щоб усунути несправність. В одному вікні ви помічаєте запит: alice@db-primary-main /etc/config $. Виходячи з цього запиту, яку саме інформацію ви знаєте про свій поточний сеанс?
Показати відповідь
Виходячи зі структури запиту, ви увійшли під ім’ям користувача alice і зараз працюєте на машині під назвою db-primary-main. Крім того, частина /etc/config вказує на те, що ваше поточне місцезнаходження (або каталог) всередині цієї машини — це папка /etc/config. Символ $ підтверджує, що термінал готовий до введення команди від імені звичайного користувача. Розуміння цього запиту є критично важливим, оскільки він діє як ваш компас, постійно нагадуючи вам, хто ви і де саме перебуваєте, перш ніж ви виконаєте потенційно важливі інструкції.
Запитання 4: Вам потрібно написати документ, у якому зафіксовано, коли саме ви виконали оновлення сервера. Чому використання date у термінальному скрипті було б надійнішим, ніж погляд на настінний годинник?
Показати відповідь
Команда date видає точну позначку часу безпосередньо з системного годинника комп’ютера, яка за своєю суттю містить точний часовий пояс і детальну інформацію аж до секунд. Покладаючись на настінний годинник, ви вносите значну людську помилку, наприклад, застосування неправильного перетворення часового поясу, округлення до найближчої хвилини або просте забування негайно записати час. У термінальному скрипті позначка часу генерується автоматично, є машинозчитуваною і стає частиною незмінного постійного запису. У виробничих середовищах точні часові шкали, згенеровані системою, необхідні для ефективної діагностики інцидентів і відстеження точної послідовності подій.
Запитання 5: Вам потрібно змінити параметр конфігурації на 50 серверах. Опишіть, чому підхід через термінал безпечніший за підхід через GUI, і вкажіть принаймні два конкретних ризики методу GUI.
Показати відповідь
Використання термінала безпечніше, оскільки воно дозволяє написати один тестований скрипт, який послідовно застосовує однакові зміни до всіх 50 серверів без втручання людини. Підхід через GUI є дуже ризикованим, оскільки людська втома робить майже неминучою помилку при повторенні тих самих ручних кліків 50 разів. Один конкретний ризик GUI полягає у випадковому пропуску важливого прапорця на одному з серверів, що спричиняє неузгодженість конфігурацій, які неймовірно важко діагностувати пізніше. Іншим ризиком є відсутність контрольного журналу (audit trail); GUI рідко записує кожен ваш клік, тоді як термінальний скрипт забезпечує постійний документ того, що саме було виконано, який можна перевірити.
Запитання 6: Молодший колега стверджує, що GUI універсально кращі, оскільки вони інтуїтивно зрозумілі та візуальні. Опишіть три конкретні інженерні сценарії, де використання термінала є не просто бажаним, а абсолютно необхідним для успіху.
Показати відповідь
По-перше, коли вам потрібно автоматизувати повторювані завдання, такі як перейменування 500 файлів або налаштування щоденного резервного копіювання; термінал дозволяє написати скрипт, який робить це миттєво та ідеально щоразу, що важко відтворити в GUI. По-друге, коли ви керуєте віддаленими серверами в дата-центрах або хмарі; на цих машинах зазвичай взагалі не встановлено графічний інтерфейс для економії ресурсів, тому доступ через термінал по SSH є єдиним способом зв’язку з ними. По-третє, коли вам потрібно поділитися складним робочим процесом з колегою; ви можете просто скопіювати та вставити термінальні команди, щоб гарантувати, що він виконає ті самі кроки, тоді як пояснення кроків у GUI вимагає створення неоднозначних скріншотів або довгих описів шляхів клікання. У всіх цих сценаріях термінал забезпечує автоматизацію, доступ і точність, яких суворо вимагає сучасна інженерія.
Практична вправа: Ваш перший термінальний сеанс
Розділ «Практична вправа: Ваш перший термінальний сеанс»Мета
Розділ «Мета»Відкрити термінал і успішно запустити чотири команди.
Кроки
Розділ «Кроки»-
Відкрийте свій термінал, використовуючи інструкції для вашої операційної системи (див. розділ «Відкриття вашого термінала» вище).
-
Запустіть свою першу команду echo:
$ echo "Hello, World!"Очікуваний результат: Hello, World!
- Перевірте дату:
$ dateОчікуваний результат: Сьогоднішня дата і час.
- Дізнайтеся, хто ви:
$ whoamiОчікуваний результат: Ваше ім’я користувача.
- Зробіть це особистим — виведіть власне ім’я:
$ echo "Мене звати [ВАШЕ ІМ'Я], і я щойно скористався терміналом!"Замініть [ВАШЕ ІМ'Я] на ваше справжнє ім’я.
- Спробуйте поєднати це:
$ echo "Сьогодні $(date), і я — $(whoami)"Це невеликий погляд на дещо потужне: ви можете вставляти команди всередину $(...), і термінал запустить їх та вставить результат. Не турбуйтеся про повне розуміння цього зараз — просто зауважте, що це працює!
Критерії успіху
Розділ «Критерії успіху»Ви виконали цю вправу, якщо можете:
- Відкрити вікно термінала
- Запустити
echo "Hello, World!"і побачити результат - Запустити
dateі побачити сьогоднішню дату - Запустити
whoamiі побачити своє ім’я користувача - Запустити комбіновану команду echo і побачити речення з сьогоднішньою датою та вашим ім’ям користувача
Ви щойно скористалися інструментом, яким щодня користуються старші інженери. Ви на своєму місці.
Наступний модуль
Розділ «Наступний модуль»Ви зробили перший крок — відкрили термінал і запустили команди. У наступних модулях ви навчитеся навігації у файловій системі, роботі з файлами та почнете будувати справжні навички.
Наступний модуль: Модуль 0.3: Перші команди термінала — Дізнайтеся, як відкрити термінал і запустити свої перші команди.