Модуль 8

Перегляд, пошук та редагування файлів

Ось готовий урок, створений за твоїм майстер-промптом у стилі CS50.


🎓 CS50: Перегляд, пошук та редагування файлів

(Або: "Як перестати боятися чорного екрана і полюбити командний рядок")


1. 🔥 Вступ: Чому ми взагалі це робимо?

Уявіть ситуацію. Ви — розробник, і ваш вебсайт "впав". Це сталося о 2-й годині ночі. Ви підключаєтеся до віддаленого сервера (який знаходиться десь у віртуальній хмарі в Огайо), і у вас немає мишки. Немає вікон. Немає звичного "Блокнота" чи VS Code.

Перед вами лише чорний екран і миготливий курсор _.

А вам треба знайти одну помилку у файлі логів, який має мільйон рядків.

Як ви це зробите? * Будете натискати стрілку вниз мільйон разів? * Спробуєте завантажити цей гігантський файл собі на ноутбук (що займе пів години)?

Ні. Ви зробите це за 3 секунди, не відриваючи рук від клавіатури.

Сьогодні ми перетворимо командний рядок з "чорної діри" на ваш найпотужніший інструмент. Ми навчимося бачити крізь дані, знаходити голку в копиці сіна і змінювати реальність (ну, або принаймні конфігураційні файли).

Готові? Поїхали!


2. 🧠 Теоретична база: Що "під капотом"?

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

У командному рядку (Linux/macOS) у нас є "Свята Трійця" дій з текстом:

1. Перегляд (cat, less)

  • cat (concatenate) — це як висипати вміст коробки на підлогу. Він показує все й одразу. Якщо файл короткий — супер. Якщо довгий — це катастрофа, бо текст пролетить перед очима швидше, ніж ви скажете "ой".
  • less — це розумна читалка. Вона не завантажує весь файл у пам'ять (уявіть, що файл важить 100 ГБ!). Вона показує його сторінка за сторінкою.

2. Пошук (grep)

Це, мабуть, найважливіша команда у світі. * grep (Global Regular Expression Print). * Аналогія: Уявіть, що ви в бібліотеці. Замість того, щоб читати кожну книгу, ви клацаєте пальцями й кажете: "Принесіть мені тільки ті сторінки, де згадується Гаррі Поттер". І миттєво отримуєте стопку потрібних аркушів.

3. Редагування (nano)

  • nano — це простий текстовий редактор прямо в терміналі. Це не Photoshop і не Word. Це "скальпель" — простий, гострий і надійний.

Що треба запам'ятати залізно: * cat — для маленьких файлів. * less — для великих. * grep — щоб фільтрувати. * nano — щоб писати.


3. 🧪 Приклади: Від простого до магії

Припустімо, у нас є файл students.txt зі списком усіх студентів університету (тисячі імен).

Сценарій 1: Швидкий погляд (cat)

Ви хочете переконатися, що файл взагалі існує і що там є текст.

cat students.txt

Що станеться? Весь список пролетить екраном, і ви побачите лише останні прізвища (наприклад, "Ярошенко" і "Ящук"). Чому? Бо термінал просто виплюнув увесь потік байтів.

Сценарій 2: Читаємо уважно (less)

Вам треба знайти когось на літеру "А".

less students.txt

Результат: Ви бачите початок списку. Ви можете тиснути стрілки Вгору/Вниз або Пробіл (сторінка вниз). Щоб вийти, натисніть q (quit). Це важливо, новачки часто застрягають тут!

Сценарій 3: Пошук (grep)

Вам дзвонить декан: "Чи є у нас студент на прізвище Ковальчук?". Ви не будете гортати список очима.

grep "Ковальчук" students.txt

Результат: Термінал виведе тільки ті рядки, де є це слово. * Ковальчук Іван * Ковальчук Олена * Сірко-Ковальчук Петро

Сценарій 4: Редагування (nano)

Виявилося, що Олену записали неправильно. Треба виправити.

nano students.txt

Відкривається редактор. 1. Стрілочками знаходите Олену. 2. Виправляєте. 3. Головний момент: Як зберегти? * Дивимось униз екрана. Там підказки. ^ означає Ctrl. * Ctrl + O (Write Out) -> Enter (підтвердити ім'я файлу). * Ctrl + X (Exit).


4. 🛠 Практична частина

Час "забруднити руки". Відкрийте термінал і виконайте ці завдання.

Завдання 1: Створення бази Створіть файл і напишіть у ньому 5 імен (своє, друзів, кота).

nano my_friends.txt
# Напишіть імена, кожне з нового рядка. Збережіть (Ctrl+O, Enter, Ctrl+X).

Завдання 2: Перевірка Виведіть вміст файлу на екран, щоб переконатися, що все збереглося. (Яку команду використаєте? Підказка: файл маленький).

Завдання 3: Пошук зради Спробуйте знайти у файлі ім'я, якого там точно немає (наприклад, "Термінатор").

grep "Термінатор" my_friends.txt

Питання: Що вивів термінал? (Правильна відповідь: нічого. Тиша — це теж відповідь в Linux).

Завдання 4: Міні-кейс "Логи" Уявіть, що ви створили файл error.log:

[INFO] System started
[INFO] User logged in
[ERROR] Database connection failed
[INFO] User logged out
[ERROR] Timeout

Ваше завдання: Однією командою вивести на екран тільки помилки.

Завдання 5: А що, якщо...? Що станеться, якщо спробувати зробити cat для файлу, якого не існує? Спробуйте:

cat ghost_file.txt

Прочитайте повідомлення про помилку. Воно вам ще не раз трапиться.


5. 💡 Мислення як у розробника

Як відрізнити новачка від профі за 5 секунд?

❌ Помилка новачка: Відкриває величезний файл через nano просто щоб подивитися один рядок. Чому це погано? Ви можете випадково натиснути клавішу і стерти частину коду. Плюс це довго.

❌ Ще одна помилка: Використовує cat для файлу на 10 000 рядків і потім пів години гортає колесиком мишки вгору, шукаючи потрібне.

✅ Як думає досвідчений інженер: 1. "Мені треба тільки почитати чи змінити?" Якщо тільки почитати — less або grep. Ніколи не відкривай редактор без потреби. 2. "Лінивий — значить ефективний". Навіщо читати очима, якщо комп'ютер може знайти слово за мілісекунду? 3. Чутливість до регістру. Пам'ятайте: для комп'ютера Error і error — це два абсолютно різні слова. (Профі використовують grep -i, щоб ігнорувати регістр).


6. 🧩 Підсумок

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

Що ви тепер вмієте: 1. 🔍 Заглядати всередину файлів (cat, less). 2. 🕵️‍♂️ Знаходити інформацію миттєво (grep). 3. ✏️ Створювати та змінювати файли без мишки (nano).

Це ваша база. Уявіть, що це ваша "кухонна дошка і ніж". Далі ми будемо вчитися готувати справжні страви.

🔜 У наступній серії: Ми навчимося поєднувати ці команди. Що, якщо я скажу вам, що можна взяти результат однієї команди і автоматично передати його в іншу? Це називається Pipes (|), і це справжня магія Linux.

А поки — потренуйтеся з nano. До зустрічі на лекції!