Перейти до вмісту

Модуль 0.5: Редагування файлів

Hands-On Lab Available
Ubuntu beginner 20 min
Launch Lab ↗

Opens in Killercoda in a new tab

Складність: [ШВИДКО] — Надрукуйте, що бачите, збережіть, готово.

Час на проходження: 25 хвилин

Передумови: Модуль 0.3 — Перші команди в терміналі


Що ви зможете зробити

Розділ «Що ви зможете зробити»

Після цього модуля ви зможете:

  • Створити та редагувати файли за допомогою nano безпосередньо в терміналі без графічного редактора
  • Написати простий bash скрипт, який об’єднує кілька команд в одному файлі
  • Зробити скрипт виконуваним за допомогою chmod +x та пояснити, чому цей крок є необхідним
  • Обрати між nano та vim і пояснити, коли варто використовувати кожен із них

У минулому модулі ви створювали файли за допомогою touch — але вони були порожніми. Порожні файли подібні до чистих листків замовлень на кухні ресторану. Вони корисні для резервування місця, але від них мало користі, поки хтось на них щось не напише.

У реальному світі вам доведеться постійно редагувати файли:

  • Configuration файли вказують програмам, як поводитися (як правила внутрішнього розпорядку на кухні)
  • Скрипти — це файли, що містять послідовність команд (як картка з рецептом)
  • Kubernetes manifests — це файли, які вказують Kubernetes, що саме потрібно запустити (ви до цього ще дійдете!)

Розглянемо випадок із реального життя у великій технологічній компанії: молодшому інженеру потрібно було оновити просте налаштування в Load Balancer. Він відкрив файл nginx.conf у nano, випадково ввів кілька зайвих символів під час збереження і зберіг файл. За кілька хвилин весь сайт “ліг”, що коштувало тисячі доларів втраченого доходу. Чому? Тому що він редагував файл безпосередньо на Production сервері, не усвідомлюючи цього, а одна друкарська помилка в конфігураційному файлі може вивести сервіс із ладу.

Ви повинні вміти відкрити файл, написати в ньому щось, зберегти та закрити — і все це з термінала. Без миші. Без графічного текстового редактора. Тільки ви і клавіатура. Навчитися безпечно редагувати файли в терміналі — це не просто про написання тексту; це про точне керування вашими серверами.


Навіщо редагувати файли в терміналі?

Розділ «Навіщо редагувати файли в терміналі?»

“Хіба я не можу просто використовувати Notepad або TextEdit?”

Можете — на власному комп’ютері. Але згадайте Модуль 0.1: багато серверів і Cloud-native середовищ працюють на Linux, і сервери зазвичай не мають графічного інтерфейсу. Коли ви підключаєтеся до віддаленого сервера (про що ви дізнаєтеся в Модулі 0.7), там немає миші, робочого столу чи Notepad. Є тільки термінал.

Термінальний текстовий редактор — це ніж шеф-кухаря у світі обчислень. Це не найвишуканіший інструмент, але ви будете використовувати його всюди.


Знайомство з nano: ваш перший термінальний редактор

Розділ «Знайомство з nano: ваш перший термінальний редактор»

Існує багато текстових редакторів, які працюють у терміналі. Два найвідоміші — це vim та nano.

Ми починаємо з nano, тому що:

nanovim
Працює так, як ви очікуєтеМає круту криву навчання
Ви друкуєте — і текст з’являєтьсяПотрібно натиснути i, перш ніж почати друкувати
Меню внизу підказує, як зберегти та вийтиЛюди часто “застрягають” і не знають, як вийти
Ідеальний для початківцівПотужний, але спочатку здається заскладним

Використовувати nano не соромно. Багато досвідчених інженерів використовують його для швидких правок. Ви вивчите vim пізніше, коли будете готові до більшої потужності.

Цікавий факт: “Як вийти з vim” стало бородатим жартом серед програмістів, тому що багато новачків відкривають vim, починають друкувати, а потім не знають команди для виходу. У nano ж гарячі клавіші для збереження та виходу завжди відображаються на екрані.


Давайте створимо та відредагуємо файл. Спочатку переконайтеся, що ви перебуваєте в домашній директорії:

Terminal window
cd ~

Тепер відкрийте nano з новим файлом:

Terminal window
nano hello.txt

Ваш екран повністю зміниться. Ви побачите щось на кшталт цього:

GNU nano 9.0 hello.txt
^G Help ^O Write Out ^W Where Is ^K Cut ^C Location
^X Exit ^R Read File ^\ Replace ^U Paste ^T Execute

Давайте розберемо це:

  • Верхній рядок: Назва редактора та ім’я вашого файлу
  • Середня область: Тут ви друкуєте (вона порожня, бо файл новий)
  • Нижні два рядки: Меню з доступними командами

Символ ^ означає Ctrl

Розділ «Символ ^ означає Ctrl»

Це те, що спочатку плутає всіх:

Символ ^ означає “утримуйте клавішу Ctrl”.

Отже, коли ви бачите ^O Write Out, це означає: “Натисніть одночасно Ctrl та O, щоб зберегти файл”.

Що ви бачитеЩо натиснутиЩо це робить
^OCtrl + OЗберегти файл
^XCtrl + XВийти з nano
^KCtrl + KВирізати поточний рядок
^UCtrl + UВставити вирізаний рядок
^WCtrl + WПошук тексту
^GCtrl + GПоказати допомогу

Ось і все. Шість комбінацій клавіш — і ви можете робити все необхідне.


Це найпростіша частина: просто друкуйте.

Коли nano відкрито, введіть наступне (натискайте Enter в кінці кожного рядка):

Welcome to the Kitchen!
Today's special: Learning to edit files.
Chef says: You're doing great.

Тепер ваш екран має виглядати так:

GNU nano 9.0 hello.txt Modified
Welcome to the Kitchen!
Today's special: Learning to edit files.
Chef says: You're doing great.
^G Help ^O Write Out ^W Where Is ^K Cut ^C Location
^X Exit ^R Read File ^\ Replace ^U Paste ^T Execute

Зверніть увагу на слово Modified у верхньому рядку. Це означає, що ви внесли зміни, які ще не збережені.


Давайте збережемо файл. Натисніть:

Ctrl + O

nano попросить підтвердити назву файлу:

File Name to Write: hello.txt

Натисніть Enter для підтвердження. Індикатор “Modified” зникне. Ваш файл збережено.


Щоб вийти з nano та повернутися в термінал:

Ctrl + X

Якщо ви внесли зміни після останнього збереження, nano запитає:

Save modified buffer? Y Yes N No ^C Cancel

Натисніть Y (Yes), щоб зберегти та вийти, N (No), щоб вийти без збереження, або Ctrl + C, щоб скасувати дію та залишитися в nano.


Перевірка файлу: cat

Розділ «Перевірка файлу: cat»

Тепер, коли ви знову в терміналі, давайте переконаємося, що файл зберігся. Команда cat виводить вміст файлу на екран:

Terminal window
cat hello.txt

Очікуваний результат:

Welcome to the Kitchen!
Today's special: Learning to edit files.
Chef says: You're doing great.

cat — це скорочення від “concatenate” (вона може об’єднувати кілька файлів), але більшість людей використовують її, щоб швидко глянути на вміст файлу. Сприймайте це як читання записки, не беручи її в руки — ви просто кидаєте на неї погляд.


Редагування існуючого файлу

Розділ «Редагування існуючого файлу»

Щоб відредагувати файл, який вже існує, просто відкрийте його так само:

Terminal window
nano hello.txt

Ваш текст уже там. Використовуйте клавіші зі стрілками для навігації. Друкуйте, щоб додати текст. Використовуйте Backspace/Delete, щоб видалити його.

Додайте новий рядок внизу:

PS: The pantry is fully stocked.

Збережіть через Ctrl + O, Enter. Вийдіть через Ctrl + X.


Вирізання та вставка рядків

Розділ «Вирізання та вставка рядків»

nano має прості функції вирізання та вставки для цілих рядків:

  1. Наведіть курсор на рядок, який хочете вирізати
  2. Натисніть Ctrl + K, щоб вирізати його (рядок зникне)
  3. Перемістіть курсор туди, де хочете його вставити
  4. Натисніть Ctrl + U, щоб вставити його

Ви можете вирізати кілька рядків, натиснувши Ctrl + K кілька разів — вони накопичуються. Потім Ctrl + U вставить їх усі разом.

Це схоже на те, як шеф-кухар змінює порядок кроків у рецепті.


Працюєте з довгим файлом і треба щось знайти? Натисніть Ctrl + W, введіть те, що шукаєте, і натисніть Enter.

Ctrl + W

nano запитає:

Search:

Введіть special і натисніть Enter. Курсор перестрибне до першої появи слова “special” у файлі.

Натисніть Ctrl + W, а потім знову Enter (нічого не вводячи), щоб знайти наступну появу слова.


Тепер давайте зробимо щось дійсно потужне: напишемо скрипт. Скрипт — це просто текстовий файл, що містить команди, які комп’ютер може виконати. Це картка з рецептом для термінала.

Крок 1: Створення скрипту

Розділ «Крок 1: Створення скрипту»
Terminal window
nano my-first-script.sh

Зупиніться та подумайте: Цей скрипт починається з дивного рядка: #!/bin/bash. Як ви думаєте, що він робить? Це називається “shebang” — це спосіб скрипту сказати системі: “Коли цей файл запускається напряму, використовуй bash для його інтерпретації”. Якщо ви натомість запускаєте файл за допомогою явної команди, наприклад bash my-first-script.sh, bash вже знає, як його обробити, навіть без shebang. Ви побачите shebang у верхній частині багатьох shell скриптів, оскільки вони роблять вибір інтерпретатора явним.

Введіть наступне точно так, як написано:

#!/bin/bash
echo "Welcome to the kitchen!"
echo "Today's date is: $(date)"
echo "You are logged in as: $(whoami)"
echo "Your current directory is: $(pwd)"
echo ""
echo "Great job, chef! Your first script works!"

Давайте розберемо кожен рядок:

  • #!/bin/bash — Це “shebang”. Він каже системі “використовуй програму bash для запуску цього файлу”, коли ви виконуєте його безпосередньо через ./my-first-script.sh. На практиці його варто додавати в усі shell скрипти, які ви хочете запускати напряму. (Так, “shebang” — це офіційний термін).
  • echo — Команда, яка виводить текст на екран. Уявіть, що на кухні хтось вигукує: “Замовлення готове!”
  • $(date) — Запускає команду date і вставляє результат. Синтаксис $() означає “виконай цю команду і дай мені її результат”.
  • $(whoami) — Запускає whoami, яка повідомляє ваше ім’я користувача.
  • $(pwd) — Ви вже це знаєте — виводить вашу поточну директорію.

Крок 2: Збереження та вихід

Розділ «Крок 2: Збереження та вихід»

Натисніть Ctrl + O, Enter, потім Ctrl + X.

Крок 3: Зробимо його виконуваним

Розділ «Крок 3: Зробимо його виконуваним»

Зупиніться та подумайте: Перед виконанням chmod спробуйте запустити скрипт напряму: ./my-first-script.sh. Що сталося? Ви маєте отримати “Permission denied”. Це навмисно — за замовчуванням нові файли сприймаються просто як дані. Комп’ютеру потрібен явний дозвіл, щоб вважати файл програмою. Це функція безпеки, а не помилка.

Наразі цей файл — просто текст. Комп’ютер не запустить його, бо він не має прав на виконання (execute permission). Давайте це виправимо:

Terminal window
chmod +x my-first-script.sh

chmod розшифровується як change mode (змінити режим). +x означає “додати право на виконання”. Ви кажете менеджеру ресторану: “Це не просто папірець — це рецепт, за яким треба готувати”.

Terminal window
./my-first-script.sh

Символи ./ означають “запусти цей файл із поточної директорії”. Очікуваний результат:

Welcome to the kitchen!
Today's date is: Sun Mar 23 14:30:00 UTC 2026
You are logged in as: yourname
Your current directory is: /Users/yourname
Great job, chef! Your first script works!

Ви щойно написали та виконали свою першу програму. Це не просто дрібниця — це величезний крок.


Рано чи пізно ви зустрінетеся з vim. Він неймовірно потужний, і його використовують багато досвідчених інженерів, хоча він встановлений не в усіх мінімальних дистрибутивах Linux. Але vim відомий своєю крутою кривою навчання, бо він працює в “режимах” — ви не можете просто відкрити його і почати друкувати.

Ми не ігноруємо vim. Ми прибережемо його на потім, коли у вас буде більше досвіду. Зараз nano цілком справляється зі своїми завданнями, а навчитися ходити перед тим, як бігати — це те, як тренуються і професійні кухарі.

Коли ви будете готові, vim чекатиме на вас. Поки що nano — ваш найкращий друг.


  • nano — це клон клону. Він був створений як безкоштовна заміна редактора pico, який був вбудований у поштовий клієнт Pine ще в 1989 році. Назва nano походить від системи префіксів SI, підкреслюючи роль наступника pico (нано в 1000 разів більше за піко).

  • Найстаріший текстовий редактор, який досі використовується, — це ed, створений у 1969 році. Його написав Кен Томпсон, один із творців Unix. ed — це “рядковий редактор”, ви не бачите всього файлу одразу. Ви редагуєте по одному рядку за раз. Інженери 1970-х писали цілі операційні системи за допомогою ed. Ваш досвід із nano — це розкіш у порівнянні з цим.

  • Configuration файли керують світом. Майже кожна програма під час запуску читає текстовий конфігураційний файл. Ваш вебсервер, ваша база даних, сам Kubernetes — усі вони читають текстові файли, щоб знати, як працювати. Вміння редагувати ці файли в терміналі — одна з найкорисніших навичок в IT.


ПомилкаЧому це проблемаЩо робити замість цього
Натискання Ctrl+Z замість Ctrl+X для виходуCtrl+Z призупиняє nano (ховає його), а не закриває. Файл залишається відкритим у фоновому режиміЯкщо ви випадково призупинили, введіть fg, щоб повернути nano. Потім використайте Ctrl+X для правильного виходу
Забули зберегти перед виходомВаші зміни будуть втраченіЗавжди Ctrl+O для збереження перед Ctrl+X для виходу. Або просто Ctrl+X і натисніть Y, коли запитає про збереження
Відсутність #!/bin/bash у скриптах, які ви плануєте запускати через ./script.shПряме виконання може не спрацювати, бо система не знатиме, який інтерпретатор використатиЯкщо хочете запускати скрипт напряму, почніть його з #!/bin/bash. Якщо запускаєте як bash script.sh, інтерпретатор уже вибраний явно
Забули про chmod +x перед запуском скриптуВи отримаєте помилку “Permission denied”Виконайте chmod +x ім'я_файлу.sh, щоб зробити його виконуваним
Використання nano, коли мали на увазі catВи випадково відкриваєте файл для редагування, хоча хотіли просто прочитати йогоВикористовуйте cat ім'я_файлу, щоб переглянути вміст без редагування
Редагування файлу на віддаленому сервері, думаючи, що він локальнийВи можете випадково змінити Production конфігурацію замість локальних тестових файлів, що призведе до збоюЗавжди перевіряйте ваш Prompt (наприклад, user@server) або виконуйте hostname, щоб підтвердити, на якій машині ви зараз
Відкриття бінарного файлу (зображення чи програма) в nano та його збереженняNano спробує прочитати бінарні дані як текст, і збереження назавжди зіпсує файлВикористовуйте nano тільки для звичайних текстових файлів (скрипти, конфіги, логи). Команда file ім'я_файлу допоможе перевірити тип файлу

Контрольні запитання

Розділ «Контрольні запитання»
  1. Ви редагуєте важливий конфігураційний файл, і меню nano внизу підказує натиснути ^O для збереження (Write Out). Ви намагаєтеся надрукувати символ каретки (^), а потім літеру O, але в результаті у вашому файлі просто з’являється текст “^O”. Що пішло не так?

    Відповідь Ви сприйняли символ `^` буквально замість того, щоб використати його як клавішу-модифікатор. У термінальних програмах, як-от nano, символ `^` позначає клавішу Ctrl (Control) на клавіатурі. Тому `^O` означає, що ви повинні затиснути Ctrl і натиснути літеру O одночасно. Це стандартне позначення в Unix-подібних системах для відображення гарячих клавіш. Друкуючи символи окремо, ви просто додавали текст у документ замість виконання команди збереження.
  2. Ви витратили 15 хвилин на ретельне написання bash скрипту в nano. Ви натискаєте Ctrl+X для виходу, але випадково натискаєте ‘N’, коли з’являється запит “Save modified buffer?”. Що станеться зі скриптом і як варто було вчинити, щоб зберегти роботу?

    Відповідь Зміни у вашому скрипті будуть назавжди втрачені, оскільки натискання 'N' вказує nano відхилити всі зміни, зроблені з моменту останнього збереження. На відміну від сучасних графічних редакторів із автозбереженням чи історією, термінальні редактори виконують саме те, що ви їм наказуєте в конкретний момент. Щоб запобігти цьому, візьміть за звичку вручну зберігати файл перед виходом за допомогою Ctrl+O (Write Out) і натискання Enter. Після збереження індикатор "Modified" вгорі зникне, і ви зможете безпечно вийти через Ctrl+X.
  3. Ви завантажили від колеги скрипт із розширенням .sh. Ви робите його виконуваним і намагаєтеся запустити, але система видає помилку, що не знає, як виконати цей файл. Відкривши його в nano, ви бачите, що перший рядок — це просто echo "Starting backup". Якого важливого елемента бракує і навіщо він системі?

    Відповідь У скрипті бракує рядка shebang, наприклад `#!/bin/bash`, у самому верху файлу. Коли ви запускаєте скрипт напряму через `./script.sh`, Linux використовує цей рядок, щоб вирішити, який інтерпретатор має прочитати цей файл. Без нього пряме виконання може не спрацювати. Якщо ви натомість запустите скрипт через явну команду `bash script.sh`, bash буде обрано автоматично, тому для такого способу запуску shebang не є суворо обов'язковим.
  4. Ви написали ідеальний скрипт для автоматизації бекапів сервера, зберегли його як backup.sh і ввели ./backup.sh для запуску. Замість старту бекапу термінал суворо відповів: Permission denied. Чому система заблокувала ваш скрипт і як це виправити?

    Відповідь Система заблокувала скрипт, оскільки за замовчуванням нові текстові файли мають лише права на читання та запис, але не на виконання. Це фундаментальна функція безпеки в Linux, розроблена для запобігання випадковому чи навмисному запуску довільних текстових файлів як програм. Щоб виправити це, ви повинні явно надати файлу право на виконання командою `chmod +x backup.sh`. Це змінить режим файлу, сигналізуючи операційній системі, що ви як власник довіряєте цьому файлу і дозволяєте йому працювати як програма.
  5. Ви написали скрипт backup.sh і спробували запустити його через ./backup.sh. Отримали “Permission denied.” Потім виконали chmod +x backup.sh і спробували знову — тепер пише “line 1: syntax error.” Які ДВІ речі пішли не так і в якому порядку їх слід виправляти?

    Відповідь Перша проблема полягала у відсутності прав на виконання, що є стандартом безпеки для нових файлів; це було виправлено за допомогою `chmod +x`. Друга проблема — у самому скрипті є некоректні інструкції, швидше за все, помилка в shebang на першому рядку (наприклад, `#bin/bash` замість `#!/bin/bash`). Ви завжди повинні спочатку розв'язати питання з правами доступу, бо система навіть не намагатиметься прочитати синтаксис файлу, який їй заборонено виконувати. Щойно права надано, інтерпретатор може прочитати файл, знайти помилку в синтаксисі та видати повідомлення про помилку в 1-му рядку. Для виправлення другої проблеми відкрийте файл у nano і виправте помилку в першому рядку.

Практична вправа: Кухонна дошка оголошень

Розділ «Практична вправа: Кухонна дошка оголошень»

Створіть “дошку оголошень” для кухні ресторану, потренуйтеся в редагуванні та напишіть скрипт.

Частина 1: Створення та редагування записки

Розділ «Частина 1: Створення та редагування записки»
Terminal window
cd ~
nano kitchen-memo.txt

Введіть ці чотири рядки:

=== KITCHEN MEMO BOARD ===
1. Morning prep starts at 6 AM
2. New menu items arriving Thursday
3. Remember: clean as you go
4. Staff meeting at 3 PM Friday

Збережіть через Ctrl + O, Enter. Вийдіть через Ctrl + X.

Перевірте свою роботу:

Terminal window
cat kitchen-memo.txt

Ви маєте побачити всі рядки точно так, як їх надрукували.

Частина 2: Редагування записки

Розділ «Частина 2: Редагування записки»

Відкрийте файл знову:

Terminal window
nano kitchen-memo.txt

Додайте п’ятий рядок внизу:

5. Chef says: great work today, team!

Збережіть та вийдіть (Ctrl + O, Enter, Ctrl + X).

Перевірте:

Terminal window
cat kitchen-memo.txt

Тепер там має бути п’ять рядків.

Частина 3: Написання скрипту звіту

Розділ «Частина 3: Написання скрипту звіту»
Terminal window
nano kitchen-report.sh

Введіть:

#!/bin/bash
echo "=== Kitchen Status Report ==="
echo "Date: $(date)"
echo "Chef on duty: $(whoami)"
echo ""
echo "--- Memo Board Contents ---"
cat kitchen-memo.txt
echo ""
echo "--- Files in current directory ---"
ls
echo ""
echo "Report complete. Kitchen is running smoothly!"

Збережіть та вийдіть.

Зробіть його виконуваним та запустіть:

Terminal window
chmod +x kitchen-report.sh
./kitchen-report.sh

Очікуваний результат (деталі можуть відрізнятися):

=== Kitchen Status Report ===
Date: Sun Mar 23 14:45:00 UTC 2026
Chef on duty: yourname
--- Memo Board Contents ---
=== KITCHEN MEMO BOARD ===
1. Morning prep starts at 6 AM
2. New menu items arriving Thursday
3. Remember: clean as you go
4. Staff meeting at 3 PM Friday
5. Chef says: great work today, team!
--- Files in current directory ---
hello.txt kitchen-memo.txt kitchen-report.sh my-first-script.sh
...
Report complete. Kitchen is running smoothly!

Частина 4: Прибирання

Розділ «Частина 4: Прибирання»
Terminal window
rm hello.txt kitchen-memo.txt kitchen-report.sh my-first-script.sh

Критерій успіху: Ви створили файл у nano, відредагували його, написали bash скрипт, який зчитує дані з іншого файлу, зробили його виконуваним та запустили. Ви більше не просто користуєтеся терміналом — ви програмуєте в ньому.


Наступний модуль: Модуль 0.6: Основи Git — Навчіться відстежувати свою роботу за допомогою системи контролю версій, що є основою сучасної розробки ПЗ.


Ви щойно використали інструмент, яким досвідчені інженери користуються щодня. Ласкаво просимо в команду.