Ось готовий урок, створений за твоїм майстер-промптом у стилі 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. До зустрічі на лекції!