Модуль 0.5: Редагування файлів
Складність:
[ШВИДКО]— Надрукуйте, що бачите, збережіть, готово.Час на проходження: 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, тому що:
| nano | vim |
|---|---|
| Працює так, як ви очікуєте | Має круту криву навчання |
| Ви друкуєте — і текст з’являється | Потрібно натиснути i, перш ніж почати друкувати |
| Меню внизу підказує, як зберегти та вийти | Люди часто “застрягають” і не знають, як вийти |
| Ідеальний для початківців | Потужний, але спочатку здається заскладним |
Використовувати nano не соромно. Багато досвідчених інженерів використовують його для швидких правок. Ви вивчите vim пізніше, коли будете готові до більшої потужності.
Цікавий факт: “Як вийти з vim” стало бородатим жартом серед програмістів, тому що багато новачків відкривають vim, починають друкувати, а потім не знають команди для виходу. У nano ж гарячі клавіші для збереження та виходу завжди відображаються на екрані.
Відкриття nano
Розділ «Відкриття nano»Давайте створимо та відредагуємо файл. Спочатку переконайтеся, що ви перебуваєте в домашній директорії:
cd ~Тепер відкрийте nano з новим файлом:
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, щоб зберегти файл”.
| Що ви бачите | Що натиснути | Що це робить |
|---|---|---|
^O | Ctrl + O | Зберегти файл |
^X | Ctrl + X | Вийти з nano |
^K | Ctrl + K | Вирізати поточний рядок |
^U | Ctrl + U | Вставити вирізаний рядок |
^W | Ctrl + W | Пошук тексту |
^G | Ctrl + 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
Розділ «Збереження: Ctrl + O»Давайте збережемо файл. Натисніть:
Ctrl + Onano попросить підтвердити назву файлу:
File Name to Write: hello.txtНатисніть Enter для підтвердження. Індикатор “Modified” зникне. Ваш файл збережено.
Вихід: Ctrl + X
Розділ «Вихід: Ctrl + X»Щоб вийти з nano та повернутися в термінал:
Ctrl + XЯкщо ви внесли зміни після останнього збереження, nano запитає:
Save modified buffer? Y Yes N No ^C CancelНатисніть Y (Yes), щоб зберегти та вийти, N (No), щоб вийти без збереження, або Ctrl + C, щоб скасувати дію та залишитися в nano.
Перевірка файлу: cat
Розділ «Перевірка файлу: cat»Тепер, коли ви знову в терміналі, давайте переконаємося, що файл зберігся. Команда cat виводить вміст файлу на екран:
cat hello.txtОчікуваний результат:
Welcome to the Kitchen!Today's special: Learning to edit files.Chef says: You're doing great.cat — це скорочення від “concatenate” (вона може об’єднувати кілька файлів), але більшість людей використовують її, щоб швидко глянути на вміст файлу. Сприймайте це як читання записки, не беручи її в руки — ви просто кидаєте на неї погляд.
Редагування існуючого файлу
Розділ «Редагування існуючого файлу»Щоб відредагувати файл, який вже існує, просто відкрийте його так само:
nano hello.txtВаш текст уже там. Використовуйте клавіші зі стрілками для навігації. Друкуйте, щоб додати текст. Використовуйте Backspace/Delete, щоб видалити його.
Додайте новий рядок внизу:
PS: The pantry is fully stocked.Збережіть через Ctrl + O, Enter. Вийдіть через Ctrl + X.
Вирізання та вставка рядків
Розділ «Вирізання та вставка рядків»nano має прості функції вирізання та вставки для цілих рядків:
- Наведіть курсор на рядок, який хочете вирізати
- Натисніть Ctrl + K, щоб вирізати його (рядок зникне)
- Перемістіть курсор туди, де хочете його вставити
- Натисніть Ctrl + U, щоб вставити його
Ви можете вирізати кілька рядків, натиснувши Ctrl + K кілька разів — вони накопичуються. Потім Ctrl + U вставить їх усі разом.
Це схоже на те, як шеф-кухар змінює порядок кроків у рецепті.
Пошук тексту
Розділ «Пошук тексту»Працюєте з довгим файлом і треба щось знайти? Натисніть Ctrl + W, введіть те, що шукаєте, і натисніть Enter.
Ctrl + Wnano запитає:
Search:Введіть special і натисніть Enter. Курсор перестрибне до першої появи слова “special” у файлі.
Натисніть Ctrl + W, а потім знову Enter (нічого не вводячи), щоб знайти наступну появу слова.
Ваш перший скрипт
Розділ «Ваш перший скрипт»Тепер давайте зробимо щось дійсно потужне: напишемо скрипт. Скрипт — це просто текстовий файл, що містить команди, які комп’ютер може виконати. Це картка з рецептом для термінала.
Крок 1: Створення скрипту
Розділ «Крок 1: Створення скрипту»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). Давайте це виправимо:
chmod +x my-first-script.shchmod розшифровується як change mode (змінити режим). +x означає “додати право на виконання”. Ви кажете менеджеру ресторану: “Це не просто папірець — це рецепт, за яким треба готувати”.
Крок 4: Запуск
Розділ «Крок 4: Запуск»./my-first-script.shСимволи ./ означають “запусти цей файл із поточної директорії”. Очікуваний результат:
Welcome to the kitchen!Today's date is: Sun Mar 23 14:30:00 UTC 2026You are logged in as: yournameYour current directory is: /Users/yourname
Great job, chef! Your first script works!Ви щойно написали та виконали свою першу програму. Це не просто дрібниця — це величезний крок.
Кілька слів про vim
Розділ «Кілька слів про vim»Рано чи пізно ви зустрінетеся з 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 ім'я_файлу допоможе перевірити тип файлу |
Контрольні запитання
Розділ «Контрольні запитання»-
Ви редагуєте важливий конфігураційний файл, і меню nano внизу підказує натиснути
^Oдля збереження (Write Out). Ви намагаєтеся надрукувати символ каретки (^), а потім літеруO, але в результаті у вашому файлі просто з’являється текст “^O”. Що пішло не так?Відповідь
Ви сприйняли символ `^` буквально замість того, щоб використати його як клавішу-модифікатор. У термінальних програмах, як-от nano, символ `^` позначає клавішу Ctrl (Control) на клавіатурі. Тому `^O` означає, що ви повинні затиснути Ctrl і натиснути літеру O одночасно. Це стандартне позначення в Unix-подібних системах для відображення гарячих клавіш. Друкуючи символи окремо, ви просто додавали текст у документ замість виконання команди збереження. -
Ви витратили 15 хвилин на ретельне написання bash скрипту в nano. Ви натискаєте Ctrl+X для виходу, але випадково натискаєте ‘N’, коли з’являється запит “Save modified buffer?”. Що станеться зі скриптом і як варто було вчинити, щоб зберегти роботу?
Відповідь
Зміни у вашому скрипті будуть назавжди втрачені, оскільки натискання 'N' вказує nano відхилити всі зміни, зроблені з моменту останнього збереження. На відміну від сучасних графічних редакторів із автозбереженням чи історією, термінальні редактори виконують саме те, що ви їм наказуєте в конкретний момент. Щоб запобігти цьому, візьміть за звичку вручну зберігати файл перед виходом за допомогою Ctrl+O (Write Out) і натискання Enter. Після збереження індикатор "Modified" вгорі зникне, і ви зможете безпечно вийти через Ctrl+X. -
Ви завантажили від колеги скрипт із розширенням
.sh. Ви робите його виконуваним і намагаєтеся запустити, але система видає помилку, що не знає, як виконати цей файл. Відкривши його в nano, ви бачите, що перший рядок — це простоecho "Starting backup". Якого важливого елемента бракує і навіщо він системі?Відповідь
У скрипті бракує рядка shebang, наприклад `#!/bin/bash`, у самому верху файлу. Коли ви запускаєте скрипт напряму через `./script.sh`, Linux використовує цей рядок, щоб вирішити, який інтерпретатор має прочитати цей файл. Без нього пряме виконання може не спрацювати. Якщо ви натомість запустите скрипт через явну команду `bash script.sh`, bash буде обрано автоматично, тому для такого способу запуску shebang не є суворо обов'язковим. -
Ви написали ідеальний скрипт для автоматизації бекапів сервера, зберегли його як
backup.shі ввели./backup.shдля запуску. Замість старту бекапу термінал суворо відповів:Permission denied. Чому система заблокувала ваш скрипт і як це виправити?Відповідь
Система заблокувала скрипт, оскільки за замовчуванням нові текстові файли мають лише права на читання та запис, але не на виконання. Це фундаментальна функція безпеки в Linux, розроблена для запобігання випадковому чи навмисному запуску довільних текстових файлів як програм. Щоб виправити це, ви повинні явно надати файлу право на виконання командою `chmod +x backup.sh`. Це змінить режим файлу, сигналізуючи операційній системі, що ви як власник довіряєте цьому файлу і дозволяєте йому працювати як програма. -
Ви написали скрипт
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: Створення та редагування записки»cd ~nano kitchen-memo.txtВведіть ці чотири рядки:
=== KITCHEN MEMO BOARD ===1. Morning prep starts at 6 AM2. New menu items arriving Thursday3. Remember: clean as you go4. Staff meeting at 3 PM FridayЗбережіть через Ctrl + O, Enter. Вийдіть через Ctrl + X.
Перевірте свою роботу:
cat kitchen-memo.txtВи маєте побачити всі рядки точно так, як їх надрукували.
Частина 2: Редагування записки
Розділ «Частина 2: Редагування записки»Відкрийте файл знову:
nano kitchen-memo.txtДодайте п’ятий рядок внизу:
5. Chef says: great work today, team!Збережіть та вийдіть (Ctrl + O, Enter, Ctrl + X).
Перевірте:
cat kitchen-memo.txtТепер там має бути п’ять рядків.
Частина 3: Написання скрипту звіту
Розділ «Частина 3: Написання скрипту звіту»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.txtecho ""echo "--- Files in current directory ---"lsecho ""echo "Report complete. Kitchen is running smoothly!"Збережіть та вийдіть.
Зробіть його виконуваним та запустіть:
chmod +x kitchen-report.sh./kitchen-report.shОчікуваний результат (деталі можуть відрізнятися):
=== Kitchen Status Report ===Date: Sun Mar 23 14:45:00 UTC 2026Chef on duty: yourname
--- Memo Board Contents ---=== KITCHEN MEMO BOARD ===1. Morning prep starts at 6 AM2. New menu items arriving Thursday3. Remember: clean as you go4. Staff meeting at 3 PM Friday5. 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: Прибирання»rm hello.txt kitchen-memo.txt kitchen-report.sh my-first-script.shКритерій успіху: Ви створили файл у nano, відредагували його, написали bash скрипт, який зчитує дані з іншого файлу, зробили його виконуваним та запустили. Ви більше не просто користуєтеся терміналом — ви програмуєте в ньому.
Наступний модуль
Розділ «Наступний модуль»Наступний модуль: Модуль 0.6: Основи Git — Навчіться відстежувати свою роботу за допомогою системи контролю версій, що є основою сучасної розробки ПЗ.
Ви щойно використали інструмент, яким досвідчені інженери користуються щодня. Ласкаво просимо в команду.