В этом параграфе мы научимся просматривать содержимое файлов разными способами — от простого вывода текста целиком до постраничного просмотра и работы с журналами программ в реальном времени.
Кроме того, мы разберёмся, как упаковывать файлы и каталоги в архивы и как распаковывать их обратно. Эти навыки пригодятся как для работы с документами, так и для администрирования систем.
Ключевые вопросы параграфа
- Как вывести содержимое файла на экран?
- Как постранично просматривать файлы, в том числе несколько сразу?
- Как посмотреть только начало или конец файла?
- Как следить за обновлением логов в реальном времени?
- Зачем нужны архивы и как с ними работать?
Вывод содержимого на экран
В Linux работа с текстовыми файлами — одна из самых частых задач. Конфигурации, логи, скрипты — всё это обычный текст. Поэтому важно уметь не только редактировать (к этому мы подойдём в следующей главе), но и просматривать содержимое: быстро заглядывать в файл, пролистывать, искать нужные строки или следить за обновлением логов.
Команда cat — одна из самых простых и часто используемых в Linux, мы даже успели с ней познакомиться в предыдущих параграфах. Её название — сокращение от concatenate (соединять), и изначально она предназначалась для объединения (конкатенации) нескольких файлов в один поток вывода. Однако на практике чаще всего cat используют для быстрого просмотра содержимого файла прямо в терминале.
Чтобы вывести содержимое файла на экран, достаточно указать его имя:
1alice@ubuntu:~$ cat filename.txt
2Hello from file1.txt!
Команда выведет текст целиком, построчно, как он записан в файле. Если указать несколько файлов, cat покажет их подряд, один за другим:
1alice@ubuntu:~$ cat file1.txt file2.txt
2Hello from file1.txt!
3Hello from file2.txt!
В этом случае удобно добавить разделитель, чтобы не запутаться, где заканчивается один файл и начинается другой:
1alice@ubuntu:~$ (cat file1.txt; echo "---"; cat file2.txt)
2Hello from file1.txt!
3---
4Hello from file2.txt!
Обратите внимание на круглые скобки () — здесь они не случайно.
Они создают подоболочку, то есть временную среду, в которой выполняется подряд несколько команд, разделённых точкой с запятой ;.
Все команды внутри скобок (cat file1.txt; echo "---"; cat file2.txt) выполняются как одно действие, а их вывод попадает в общий поток на экран.
При помощи команды cat мы можем узнать имя текущей системы:
1alice@ubuntu:~$ cat /etc/hostname
2ubuntu
Файл /etc/hostname хранит имя системы — то самое, что выводит команда hostname, с которой мы уже знакомы. Команда hostname просто читает этот файл и выводит его содержимое — оба способа дают одинаковый результат. Поэтому, используя cat, мы как бы заглядываем под капот и видим, откуда hostname берёт это имя.
При помощи команды cat мы можем объединить два файла и записать результат в новый файл — combined.txt:
1alice@ubuntu:~$ cat file1.txt file2.txt > combined.txt
2alice@ubuntu:~$ cat combined.txt
3Hello from file1.txt!
4Hello from file2.txt!
Здесь используется уже знакомый вам оператор перенаправления вывода >. Он перенаправляет результат команды в файл вместо вывода на экран. В нашем случае всё, что вывел cat, записывается в combined.txt.
Также можно передать содержимое файла в другую команду через пайп (|):
1alice@ubuntu:~$ cat combined.txt | grep "Hello"
2**Hello** from file1.txt!
3**Hello** from file2.txt!
Здесь команда grep позволяет искать указанный шаблон Hello по строкам в файле, в данном случае combined.txt.
Мы подробно разберём команду grep в следующем параграфе.
А пока вот занимательный факт
От названия этой команды возникло слово «грепать», то есть искать что-либо в текстовых документах. Им часто пользуются разработчики. Так что если встретите где-то фразу «грепни логи» — не пугайтесь! Это значит, что вас попросили найти что-то в логах.
cat часто используется не только для просмотра, но и как часть цепочки команд, где результат одной команды передаётся на вход другой. Это и есть пайп (|), а цепочка из нескольких таких пайпов называется конвейером — к этой теме мы ещё вернёмся в одном из следующих параграфов. Но cat так часто используется с пайпами и перенаправлением вывода, что мы не могли не сказать об этом сейчас.
Когда использовать cat
- Когда файл небольшой — например, несколько строк или страниц.
- Чтобы быстро заглянуть в текст без перехода в отдельный просмотрщик.
- При объединении или перенаправлении данных в конвейере. Например, вы можете «склеить» файлы или подать текст на вход другой программе:
1# склеивание двух файлов
2alice@ubuntu:~$ cat file1.txt file2.txt > combined.txt
3# подаём текст другой программе на вход
4alice@ubuntu:~$ cat data.csv | wc -l
Полезные опции
|
Опция |
Описание |
Пример |
|
|
Показывать номера строк |
|
|
|
Нумеровать только непустые строки |
|
|
|
Сжимать повторяющиеся пустые строки |
|
|
|
Показывать символ |
|
Эти флаги помогают, например, при отладке текстовых файлов, когда важно увидеть пустые строки или понять, где кончается строка, что часто полезно при работе с конфигурациями или скриптами.
Но если мы попробуем открыть с помощью cat большой файл, то весь текст сразу вывалится на экран и прокрутится мимо. Если нужно пролистывать, искать строки, останавливаться — в этих случаях лучше использовать программы less, head или tail, которые мы разберём дальше.
Постраничный вывод
less — это интерактивная программа для постраничного просмотра содержимого. Давайте с её помощью прочитаем файл:
1alice@ubuntu:~$ less filename.txt
less откроет файл в специальном режиме просмотра: текст не выводится сразу, а показывается постранично. Вы можете листать, искать, переходить по файлу — не загружая весь его целиком в память. Это делает less особенно полезной для просмотра логов, конфигураций и больших текстовых файлов.
Когда вы вводите в терминале команду вроде ls, cat или mkdir, вы запускаете программу с таким же именем. Терминал просто находит соответствующий исполняемый файл в каталогах из переменной $PATH и запускает его. Поэтому слова «команда» и «программа» в этой главе мы используем как равнозначные, и это не должно вас смущать.
Для работы в less потребуется знание следующих ключевых клавиш и сочетаний:
|
Клавиша |
Действие |
|
|
Перейти на следующую страницу |
|
|
Прокрутка по строкам |
|
|
Найти слово, поиск вперёд |
|
|
Найти слово, поиск назад |
|
|
Перейти к следующему совпадению |
|
|
Перейти к предыдущему совпадению |
|
|
Перейти в начало файла |
|
|
Перейти в конец файла |
|
|
Выйти из просмотра |
less поддерживает не только стрелки и пробел, но и сочетания клавиш из редактора vi. С ним мы познакомимся в следующей главе, пока просто держим вас в курсе.
Просмотр нескольких файлов
less умеет открывать сразу несколько файлов. Это удобно, если вы хотите сравнить их содержимое или быстро пролистать набор логов:
1alice@ubuntu:~$ less file1.txt file2.txt file3.txt
Навигация между файлами:
:n— перейти к следующему файлу;:p— вернуться к предыдущему;:f— показать имя текущего файла и позицию в нём.
В отличие от cat, команда less не читает весь файл целиком, а подгружает только нужные части. Благодаря этому она прекрасно справляется даже с файлами на сотни мегабайт.
less — это как «текстовый просмотрщик» для терминала. Он позволяет листать и искать так же удобно, как в текстовом редакторе, но без риска случайно изменить файл.
Мы можем с лёгкостью просмотреть системный лог (а в нём могут быть тысячи строк) с возможностью поиска по ошибкам:
1alice@ubuntu:~$ less /var/log/syslog
Открыв лог, мы можем ввести /error и нажать клавишу Enter. Это позволит найти все строки, в которых содержится error, или ошибка.
Чтобы перейти к следующему совпадению — нажмём клавишу n, чтобы вернуться к предыдущему — Shift + n.
А чтобы выйти из программы less — достаточно нажать q.
Но что, если файл довольно большой, а мы не хотим открывать его с начала и листать к концу?
Нам поможет опция +G:
1alice@ubuntu:~$ less +G app.log
Эта опция позволяет сразу перейти в конец файла после открытия. Есть и другие полезные опции:
|
Команда |
Что позволяет делать |
Пример |
|
|
Перейти в конец файла |
|
|
|
Открыть и перейти на 10-ю строку |
|
|
|
Открыть и сразу выполнить поиск |
|
Команда more
Программа more появилась раньше less и выполняет ту же задачу — постраничный вывод текста. Однако её возможности гораздо проще.
1alice@ubuntu:~$ more filename.txt
Навигация:
Space— следующая страница;Enter— прокрутить на одну строку;q— выйти.
На этом функциональность more фактически заканчивается: нет поиска, нельзя пролистывать назад, нельзя открывать несколько файлов.
Можно сказать, что less — это усовершенствованный more. Даже авторы шутят в описании:
less is more. Соль шутки в том, что фразу можно перевести и как «лучше меньше, да лучше» и как «less — это more».
Если вы часто смотрите длинные файлы — пользуйтесь less.
Например, чтобы просматривать вывод любой команды постранично:
1alice@ubuntu:~$ ps aux | less
2alice@ubuntu:~$ journalctl | less
Команда ps aux показывает список всех запущенных процессов в системе, а journalctl — системные логи (мы подробно разберём их в главе 6).
Пока просто запомните, что с помощью | less вы можете удобно пролистывать даже длинный вывод любой программы.
Как посмотреть только начало или конец файла
Иногда нет необходимости открывать или пролистывать весь файл.
Достаточно увидеть первые или последние строки — например, чтобы понять структуру файла, убедиться, что данные записались, или проверить, как завершилась работа программы.
Для этого в Linux есть две простые и очень полезные команды: head и tail.
Начало файла: head
Команда head показывает первые строки файла.
По умолчанию — 10 строк:
1alice@ubuntu:~$ head filename.txt
Если нужно вывести больше (или меньше), используйте флаг -n и укажите число строк. Например, команда ниже покажет первые 20 строк файла filename.txt.
1alice@ubuntu:~$ head -n 20 filename.txt
Конец файла: tail
А команда tail, наоборот, показывает последние строки файла.
Это особенно удобно, если вы работаете с логами или отчётами, где новая информация добавляется в конец.
1alice@ubuntu:~$ tail filename.txt
По умолчанию тоже выводит 10 строк. Количество строк также можно изменить при помощи опции -n:
1alice@ubuntu:~$ tail -n 15 filename.txt
В результате на экране будут последние 15 строк из файла filename.txt.
head и tail можно использовать не только с файлами, но и с любым выводом команды.
Например, сочетание ниже покажет только первые строки списка процессов:
1alice@ubuntu:~$ ps aux | head
Как следить за обновлением логов в реальном времени (tail -f)
Иногда важно не просто увидеть конец файла, а следить за его изменениями в реальном времени.
Это часто нужно системным администраторам и разработчикам — например, чтобы смотреть, как программа пишет в лог или как появляются новые ошибки.
Для этого используется опция -f (англ. follow — следить):
1alice@ubuntu:~$ tail -f /var/log/syslog
После запуска команда покажет последние строки файла и продолжит выводить новые строки по мере их появления.
Таким образом мы можем следить за ошибками веб-сервера Nginx:
1alice@ubuntu:~$ tail -f /var/log/nginx/error.log
22025/10/20 10:42:11 [error] 1024#1024: *15 open() "/var/www/html/missing.html" failed (2: No such file or directory), client: 192.168.1.15, server: example.com, request: "GET /missing.html HTTP/1.1", host: "example.com"
32025/10/20 10:42:12 [warn] 1024#1024: *16 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/1/01/000000001 while reading upstream, client: 192.168.1.15, server: example.com, request: "GET /api/data HTTP/1.1", upstream: "http://127.0.0.1:8080/data", host: "example.com"
42025/10/20 10:42:14 [notice] 1024#1024: signal process started
Что такое Nginx?
Это популярный веб-сервер, который обрабатывает входящие запросы от пользователей и передаёт их вашим приложениям.
Он используется для обслуживания большинства сайтов в интернете благодаря своей скорости и надёжности. Если в будущем вы планируете создавать собственные веб-приложения, скорее всего, вы столкнётесь с Nginx — он часто используется как основной сервер или обратный прокси.
Чтобы остановить слежение — нажмите Ctrl + C.
Если файл растёт слишком быстро, используйте less +F — это аналог tail -f, но с возможностью остановить поток (Ctrl + C) и пролистать назад.
Чтобы снова включить «живой режим», нажмите Shift + F.
Попробуйте сами: откройте два терминала, в одном запустите tail -f app.log, а в другом добавляйте строки в файл (echo "test" >> app.log). Посмотрите, как новые записи появляются в реальном времени.
Давайте проверим, как вы разобрались с просмотром содержимого файлов:
Работа с архивами (tar)
В Linux архивы создаются и извлекаются с помощью команды tar — от tape archive (ленточный архив).
Первоначально tar был создан для записи данных на магнитные ленты, но сегодня используется повсеместно — для упаковки, резервного копирования и передачи каталогов в одном файле.
Архив — это не обязательно сжатый файл.
Он просто собирает множество файлов и папок в один контейнер, сохраняя структуру каталогов, права доступа и метаданные.
Создание архива
Чтобы упаковать каталог folder/ в архив archive.tar, выполните:
1alice@ubuntu:~$ tar -cvf archive.tar folder/
2folder/
3folder/combined.txt
4folder/file2.txt
5folder/file1.txt
Расшифруем опции:
|
Опция |
Значение |
|
|
Создать новый архив (create) |
|
|
Показывать процесс упаковки (verbose) |
|
|
Указать имя файла архива (file) |
Опция -v позволяет увидеть процесс работы tar — в выводе терминала будут показаны имена файлов или каталогов, которые в данный момент обрабатываются командой tar.
После выполнения появится файл archive.tar, который содержит все файлы и подкаталоги из folder/.
Мы можем проверить содержимое архива, не распаковывая его, при помощи опции t — показать список файлов в архиве:
1alice@ubuntu:~$ tar -tvf archive.tar
2drwxrwxr-x alice/alice 0 2025-10-20 06:12 folder/
3-rw-rw-r-- alice/alice 144 2025-10-20 06:00 folder/combined.txt
4-rw-rw-r-- alice/alice 22 2025-10-20 05:49 folder/file2.txt
5-rw-rw-r-- alice/alice 22 2025-10-20 05:49 folder/file1.txt
Важно: создавая архив, указывайте относительные (короткие) пути до файлов и каталогов, которые хотите в архив включить. Это упростит перенос и извлечение.
Извлечение архива
Чтобы распаковать архив, используйте опцию x (англ. extract — извлечь):
1alice@ubuntu:~$ tar -xvf archive.tar
2folder/
3folder/combined.txt
4folder/file2.txt
5folder/file1.txt
Расшифруем опции:
|
Опция |
Значение |
|
|
Извлечь файлы из архива |
|
|
Показывать процесс извлечения (verbose) |
|
|
Указать имя архива |
Файлы будут распакованы в текущий каталог.
Если нужно извлечь их в другое место, добавьте -C:
1alice@ubuntu:~$ tar -xvf archive.tar -C /tmp/unpacked
2folder/
3folder/combined.txt
4folder/file2.txt
5folder/file1.txt
Сжатие данных
Важно: tar не сжимает данные!
В отличие от привычных .zip-архивов, формат .tar не сжимает файлы сам по себе — он просто объединяет их. Сжатие выполняют отдельные утилиты (gzip, bzip2, xz). Поэтому .tar.gz — это на самом деле «архив в архиве».
|
Формат |
Команда |
Примечание |
|
|
|
Использует |
|
|
|
Использует |
|
|
|
Использует |
Опции для сжатия различаются только одной буквой:
z— использовать gzip;j— использовать bzip2;J— использовать xz.
Для распаковки сжатых архивов tar сам определяет формат по расширению файла:
1alice@ubuntu:~$ tar -xvf archive.tar.gz
2alice@ubuntu:~$ tar -xvf archive.tar.bz2
3alice@ubuntu:~$ tar -xvf archive.tar.xz
Но можно указать явно:
1alice@ubuntu:~$ tar -xzvf archive.tar.gz
2alice@ubuntu:~$ tar -xjvf archive.tar.bz2
Реальное применение выглядит примерно так:
1alice@ubuntu:~$ tar -czvf backup-$(date +%F).tar.gz ~
Мы создаём архив нашего домашнего каталога, который называется backup-<текущая дата>.tar.gz.
Обратите внимание на конструкцию $(date +%F). Давайте её разберём.
$( ... ) — это подстановка команды (англ. command substitution). Bash сначала выполняет команду внутри скобок, а затем подставляет её результат на это место в строке.
В нашем случае команда внутри скобок
1date +%F
выведет текущую дату в формате ГГГГ-ММ-ДД, например:
12025-12-15
Поэтому выражение
1backup-$(date +%F).tar.gz
превратится во что-то вроде
1backup-2025-12-15.tar.gz
Именно это имя и получит созданный архив.
Проще говоря, $(...) — это способ «встроить результат другой команды прямо в строку».
Этот приём часто используется, когда нужно динамически подставить дату, имя пользователя или другое значение.
Давайте попробуем составить команду для распаковки архива backup.tar.gz в каталог /tmp/unpack:
Что дальше
Теперь, когда вы научились просматривать содержимое файлов, следить за логами и работать с архивами, пора перейти к следующему важному навыку — поиску информации в системе.
В следующем параграфе вы узнаете:
- Как искать файлы по имени, типу или маске.
- Как искать текст внутри файлов, в том числе рекурсивно.
- Что такое регулярные выражения.
- Как подсчитать количество строк, слов и символов.
- Как сравнить два файла или даже два каталога.
После этого вы сможете быстро находить нужные данные, анализировать результаты и автоматизировать рутинные проверки в терминале.
А пока закрепите материал на практике:
- Отметьте, что урок прочитан, при помощи кнопки ниже.
- Пройдите мини-квиз, чтобы проверить, насколько хорошо вы разобрались с просмотром содержимого файлов.
- Перейдите к задачам этого параграфа и потренируйтесь.
- Перед этим — загляните в короткий гайд о том, как работает система проверки.
Ключевые выводы по параграфу
cat— простейшая команда для вывода содержимого файлов. Позволяет быстро просмотреть текст, объединить несколько файлов или передать данные в другую команду через пайп (|).less— интерактивный просмотрщик, который показывает содержимое постранично. Подходит для больших файлов, позволяет искать, пролистывать, переключаться между файлами и работать без загрузки всего файла в память.- Команда
more— более простая и устаревшая версия командыless. headиtailпозволяют быстро взглянуть на начало или конец файла без открытия его целиком. Опция-nзадаёт количество строк, которое нужно показать.tail -f— незаменим для наблюдения за файлами, которые обновляются в реальном времени. Команда показывает новые строки по мере их появления, что удобно при отладке или мониторинге работы сервисов.tar— инструмент для создания и извлечения архивов. Он объединяет файлы и каталоги в один контейнер (.tar), сохраняя структуру и права.- Для сжатия данных нужно использовать
tarсовместно сgzip,bzip2илиxzпри помощи опцийz,jиJ. - Перед извлечением архива полезно проверить его содержимое:
tar -tvf archive.tar.
