Модуль 0.5: Редагування файлів
Складність:
[ШВИДКО]— Напишіть те, що бачите, збережіть, готовоЧас на виконання: 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, тому що:
| nano | vim |
|---|---|
| Працює так, як ви очікуєте | Має складний початковий етап навчання |
| Просто пишіть, і текст з’являється | Потрібно натиснути i, перш ніж почати писати |
| Меню внизу показує, як зберегти та вийти | Люди часто застрягають і не можуть зрозуміти, як вийти |
| Ідеальний для новачків | Потужний, але спочатку може приголомшити |
Використовувати nano не соромно. Багато досвідчених інженерів використовують його для швидких правок. Ви вивчите vim пізніше, коли будете готові до більших можливостей.
Цікавий факт: «Як вийти з vim» — одне з найпопулярніших запитань щодо програмування в інтернеті. Понад 2 мільйони людей переглянули це запитання на Stack Overflow. З nano у вас ніколи не буде такої проблеми.
Відкриття nano
Розділ «Відкриття nano»Давайте створимо та відредагуємо файл. Спочатку переконайтеся, що ви перебуваєте у вашому домашньому каталозі:
cd ~Тепер відкрийте nano з новим файлом:
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 одночасно, щоб зберегти файл».
| Що ви бачите | Що ви натискаєте | Що це робить |
|---|---|---|
^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 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
Розділ «Збереження: 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, щоб зберегти та вийти, N, щоб вийти без збереження, або 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, щоб запустити мене». Без нього комп’ютер не знав би, як інтерпретувати файл. Ви бачитимете цей рядок на початку кожного 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». Це зроблено навмисно — нові файли за замовчуванням є просто даними. Комп’ютеру потрібен явний дозвіл, щоб розглядати файл як програму. Це функція безпеки, а не помилка.
Наразі файл — це просто текст. Комп’ютер не запустить його, бо він не має дозволу на виконання. Давайте це виправимо:
chmod +x my-first-script.shchmod означає change mode (змінити режим). +x означає «додати дозвіл на виконання» (execute). Ви кажете менеджеру ресторану: «Це не просто документ — це рецепт, за яким треба готувати».
Крок 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 у 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, щоб перевірити тип файлу перед відкриттям |
Контрольні запитання
Розділ «Контрольні запитання»-
Ви редагуєте важливий файл конфігурації, і меню 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`) у самому верху файлу. Без цього рядка завантажувач програм операційної системи не знає, яку програму-інтерпретатор слід використовувати для читання та виконання подальших інструкцій. Shebang діє як сувора директива, вказуючи системі, чи передавати вміст файлу до bash, python, node чи іншого інтерпретатора. Оскільки його не було, система намагалася вгадати або використати метод за замовчуванням, що не вдалося через відсутність чітко визначеного контексту. -
Ви написали ідеальний скрипт для автоматизації резервного копіювання сервера, зберегли його як
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 — Навчіться відстежувати свою роботу за допомогою системи контролю версій, основи сучасної розробки ПЗ.
Ви щойно використали інструмент, яким досвідчені інженери користуються щодня. Ви на своєму місці.