← Back to course

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

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

З поверненням.

У попередньому уроці ти навчився створювати, копіювати, переміщати, перейменовувати і видаляти файли.

Тепер час зазирнути всередину.

Бо файли — це не декорації. Це контейнери з інформацією.

Іноді корисною інформацією.

Іноді логами.

Іноді конфігураційним файлом, який виглядає так, ніби його писав чарівник під час грози.

Що Ти Вивчиш

У цьому уроці ти навчишся:

Місія

Твоя місія проста:

Створити кілька текстових файлів, прочитати їх, перевірити і знайти всередині потрібну інформацію.

Ми перетворюємо термінал на інструмент детектива.

Лупа не потрібна.

Драматичний капелюх — за бажанням.

Створи Файл для Практики

Спочатку перейди в папку для практики:

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 можна рухатися так:

Так, 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

Потім дай відповіді:

  1. Яка команда показує весь файл?
  2. Яка команда краща для довгих файлів?
  3. Яка команда показує перші рядки?
  4. Яка команда показує останні рядки?
  5. Яка команда шукає текст у файлах?

Міні-Завдання

Створи файл linux-notes.txt з такими рядками:

Linux is stable.
The terminal is useful.
Commands can be combined.
Practice every day.
Do not fear errors.

Потім:

  1. Покажи весь файл.
  2. Покажи тільки перші 2 рядки.
  3. Покажи тільки останні 2 рядки.
  4. Знайди слово terminal.
  5. Знайди слово errors, ігноруючи регістр.
  6. Покажи номер рядка, де з’являється Practice.

Використовуй тільки команди термінала.

Без мишки.

Мишка починає відчувати себе безробітною.

Підсумок

Сьогодні ти дізнався, що:

Тепер ти можеш читати і шукати у файлах з термінала.

Це великий крок.

Бо коли ти вмієш шукати, ти перестаєш губитися і починаєш бути небезпечним.

У хорошому сенсі.

Переважно.

Наступний Урок

У наступному уроці ми поговоримо про права доступу і sudo.

Саме там Linux починає казати:

“Ні.”

А ми вчимося розуміти чому.