Читання і Пошук у Файлах

З поверненням.
У попередньому уроці ти навчився створювати, копіювати, переміщати, перейменовувати і видаляти файли.
Тепер час зазирнути всередину.
Бо файли — це не декорації. Це контейнери з інформацією.
Іноді корисною інформацією.
Іноді логами.
Іноді конфігураційним файлом, який виглядає так, ніби його писав чарівник під час грози.
Що Ти Вивчиш
У цьому уроці ти навчишся:
- виводити вміст файлу за допомогою
cat; - читати довгі файли за допомогою
less; - дивитися початок файлу за допомогою
head; - дивитися кінець файлу за допомогою
tail; - шукати всередині файлів за допомогою
grep; - не відкривати величезні файли як хоробрий, але трохи розгублений воїн.
Місія
Твоя місія проста:
Створити кілька текстових файлів, прочитати їх, перевірити і знайти всередині потрібну інформацію.
Ми перетворюємо термінал на інструмент детектива.
Лупа не потрібна.
Драматичний капелюх — за бажанням.
Створи Файл для Практики
Спочатку перейди в папку для практики:
cd ~/terminal-practice
Якщо папки ще немає, створи її:
mkdir -p ~/terminal-practice
cd ~/terminal-practice
Тепер створи файл story.txt:
touch story.txt
Можеш відкрити його в текстовому редакторі або швидко створити з термінала:
echo "Linux is powerful." > story.txt
echo "The terminal is direct." >> story.txt
echo "Practice makes everything easier." >> story.txt
echo "Errors are messages, not monsters." >> story.txt
Тепер у тебе є файл з кількома рядками тексту.
Читання Файлу за Допомогою cat
Щоб вивести весь файл у термінал, використай:
cat story.txt
Ти маєш побачити:
Linux is powerful.
The terminal is direct.
Practice makes everything easier.
Errors are messages, not monsters.
cat корисний для маленьких файлів.
Для великих файлів він може залити термінал текстом так, ніби хтось відкрив макаронну фабрику прямо в екрані.
Використовуй його з розумом.
Читання Довгих Файлів за Допомогою less
Для довших файлів використовуй:
less story.txt
Всередині less можна рухатися так:
- натисни
Space, щоб рухатися вниз; - натисни
b, щоб повернутися назад; - натисни
/, щоб шукати; - натисни
q, щоб вийти.
Так, q означає quit.
Це важливо.
Багато людей були ув’язнені всередині less довше, ніж готові визнати.
Подивитися Початок за Допомогою head
Щоб побачити перші рядки файлу, використовуй:
head story.txt
За замовчуванням head показує перші 10 рядків.
Щоб показати тільки перші 2 рядки:
head -n 2 story.txt
Це корисно, коли хочеш швидко зрозуміти, про що файл.
Як прочитати першу сторінку інструкції перед тим, як повністю її проігнорувати.
Подивитися Кінець за Допомогою tail
Щоб побачити останні рядки файлу, використовуй:
tail story.txt
Щоб показати тільки останні 2 рядки:
tail -n 2 story.txt
tail дуже корисний для логів, бо нова інформація зазвичай з’являється в кінці.
Наприклад:
tail -f app.log
Опція -f слідкує за файлом у реальному часі.
Вона показує нові рядки, коли вони з’являються.
Дуже корисно.
І трохи гіпнотично.
Пошук у Файлі за Допомогою grep
Щоб знайти текст у файлі, використовуй grep.
Пошукай слово terminal:
grep "terminal" story.txt
Ти маєш побачити:
The terminal is direct.
Пошукай Errors:
grep "Errors" story.txt
Ти маєш побачити:
Errors are messages, not monsters.
grep — одна з найкорисніших команд термінала.
Він швидко знаходить текст.
Як Ctrl+F, але з міцнішою кавою.
Пошук Без Урахування Регістру
За замовчуванням grep враховує великі й малі літери.
Це означає, що errors і Errors — різні речі.
Спробуй:
grep "errors" story.txt
Можливо, ти нічого не побачиш.
Тепер спробуй:
grep -i "errors" story.txt
Опція -i ігнорує регістр.
Набагато краще.
Linux строгий, але іноді можна попросити його розслабитися.
Показати Номери Рядків
Щоб показати номери рядків, використовуй:
grep -n "terminal" story.txt
Можеш побачити:
2:The terminal is direct.
Це корисно, коли хочеш знати, де саме щось знаходиться.
Особливо в конфігураційних файлах, логах або коді.
Пошук у Кількох Файлах
Створи ще один файл:
echo "The terminal can search many files." > notes.txt
echo "Learning Linux step by step is smart." >> notes.txt
Тепер шукай у всіх .txt файлах:
grep "terminal" *.txt
Можеш побачити результати з кількох файлів.
Тут grep починає виглядати як суперсила.
Не яскрава суперсила.
Скоріше тихий бібліотекар, який знаходить будь-що за три секунди.
Типові Помилки
Використовувати cat на величезних файлах
Це може бути неприємно:
cat very-large-file.log
Якщо файл величезний, термінал може заповнитися нескінченним текстом.
Використовуй:
less very-large-file.log
або:
tail very-large-file.log
Будь розумним. Не бийся з драконом логів ложкою.
Забути лапки
Це добре:
grep "terminal" story.txt
Для простих слів може спрацювати і так:
grep terminal story.txt
Але якщо пошуковий текст має пробіли, використовуй лапки:
grep "Practice makes" story.txt
Лапки тримають слова разом.
Без лапок shell може неправильно тебе зрозуміти.
Shell потужний, але не телепат.
Шукати з неправильним регістром
Якщо це нічого не знаходить:
grep "errors" story.txt
спробуй:
grep -i "errors" story.txt
Регістр має значення, якщо ти не скажеш grep його ігнорувати.
Практика
Спробуй це:
cd ~/terminal-practice
cat story.txt
less story.txt
head -n 2 story.txt
tail -n 2 story.txt
grep "terminal" story.txt
grep -i "errors" story.txt
grep -n "Practice" story.txt
Потім дай відповіді:
- Яка команда показує весь файл?
- Яка команда краща для довгих файлів?
- Яка команда показує перші рядки?
- Яка команда показує останні рядки?
- Яка команда шукає текст у файлах?
Міні-Завдання
Створи файл linux-notes.txt з такими рядками:
Linux is stable.
The terminal is useful.
Commands can be combined.
Practice every day.
Do not fear errors.
Потім:
- Покажи весь файл.
- Покажи тільки перші 2 рядки.
- Покажи тільки останні 2 рядки.
- Знайди слово
terminal. - Знайди слово
errors, ігноруючи регістр. - Покажи номер рядка, де з’являється
Practice.
Використовуй тільки команди термінала.
Без мишки.
Мишка починає відчувати себе безробітною.
Підсумок
Сьогодні ти дізнався, що:
catпоказує вміст файлу;lessвідкриває файл у режимі прокручування;headпоказує початок файлу;tailпоказує кінець файлу;tail -fслідкує за файлом у реальному часі;grepшукає текст у файлах;grep -iігнорує регістр;grep -nпоказує номери рядків.
Тепер ти можеш читати і шукати у файлах з термінала.
Це великий крок.
Бо коли ти вмієш шукати, ти перестаєш губитися і починаєш бути небезпечним.
У хорошому сенсі.
Переважно.
Наступний Урок
У наступному уроці ми поговоримо про права доступу і sudo.
Саме там Linux починає казати:
“Ні.”
А ми вчимося розуміти чому.