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

Модуль 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, але вони були порожніми. Порожні файли подібні до чистих листків замовлень на кухні ресторану. Вони корисні для резервування місця, але не мають великого значення, поки хтось на них щось не напише.

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

Цікавий факт: «Як вийти з vim» — одне з найпопулярніших запитань щодо програмування в інтернеті. Понад 2 мільйони людей переглянули це запитання на Stack Overflow. З nano у вас ніколи не буде такої проблеми.


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

Terminal window
cd ~

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

Terminal window
nano hello.txt

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

GNU nano 6.2 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 6.2 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, щоб зберегти та вийти, N, щоб вийти без збереження, або 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, щоб запустити мене». Без нього комп’ютер не знав би, як інтерпретувати файл. Ви бачитимете цей рядок на початку кожного 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 для запуску цього файлу». Кожному скрипту це потрібно в першому рядку.
  • echo — Команда, яка виводить текст на екран. Сприймайте це як вигук на кухні: «Замовлення готове!»
  • $(date) — Запускає команду date і вставляє результат. Синтаксис $() означає «виконай цю команду і дай мені результат її роботи».
  • $(whoami) — Запускає whoami, яка повідомляє ваше ім’я користувача.
  • $(pwd) — Ви вже знаєте цю команду — вона виводить ваш поточний каталог.

Крок 2: Збережіть і вийдіть

Розділ «Крок 2: Збережіть і вийдіть»

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

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

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

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

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

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

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

Крок 4: Запустіть його

Розділ «Крок 4: Запустіть його»
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 у 1990-х роках. nano розшифровується як «nano’s ANOther editor» (ще один редактор nano) — рекурсивна абревіатура, що є ботанічною традицією в програмуванні.

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

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


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

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

Розділ «Контрольні запитання»
  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`) у самому верху файлу. Без цього рядка завантажувач програм операційної системи не знає, яку програму-інтерпретатор слід використовувати для читання та виконання подальших інструкцій. Shebang діє як сувора директива, вказуючи системі, чи передавати вміст файлу до bash, python, node чи іншого інтерпретатора. Оскільки його не було, система намагалася вгадати або використати метод за замовчуванням, що не вдалося через відсутність чітко визначеного контексту.
  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 — Навчіться відстежувати свою роботу за допомогою системи контролю версій, основи сучасної розробки ПЗ.


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