Чтение и Поиск в Файлах

С возвращением.
В предыдущем уроке ты научился создавать, копировать, перемещать, переименовывать и удалять файлы.
Теперь пора заглянуть внутрь.
Потому что файлы — это не декорации. Это контейнеры с информацией.
Иногда полезной информацией.
Иногда логами.
Иногда конфигурационным файлом, который выглядит так, будто его писал волшебник во время грозы.
Что Ты Изучишь
В этом уроке ты научишься:
- выводить содержимое файла с помощью
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 начинает говорить:
“Нет.”
А мы учимся понимать почему.