Просмотр файлов с помощью head, tail и cat

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать в мир просмотра файлов в Linux. В предыдущем модуле вы научились организовывать файлы. Теперь пришло время открывать их и читать содержимое.

В этой лабораторной работе вы изучите три основных способа просмотра содержимого файла:

  1. cat: читает весь файл целиком. Лучше всего подходит для небольших заметок.
  2. head: читает только начало файла — его «заголовок». Удобен для быстрой проверки назначения файла.
  3. tail: читает только конец файла. Особенно полезен для просмотра последних обновлений в файле журнала.

Вы также научитесь отслеживать обновления файла в реальном времени.

Это важный шаг в освоении Linux. В предыдущих модулях вы узнали, как организованы файлы. Теперь вы начинаете работать с их содержимым. В реальных системах значительная часть администрирования сводится к умению прочитать нужный текстовый файл правильным способом.

Просмотр файла целиком (cat)

Команда cat — стандартный способ сказать: «Покажите мне всё содержимое этого файла».

Она лучше всего подходит для небольших файлов. Если применить её к огромному файлу, текст будет слишком быстро прокручиваться по экрану, и вы не успеете его прочитать.

Название cat — сокращение от concatenate («объединять»), поскольку изначально команда предназначалась для объединения и вывода содержимого файлов. Многие начинающие используют её прежде всего для просмотра файлов, но исторически она была частью более широкого подхода к обработке текста.

Мы подготовили небольшой файл с именем sample.txt.

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

cd ~/project

Теперь выведите содержимое файла на экран:

cat sample.txt

Вы сразу увидите весь текст файла:

Line 1: This is a sample file.
Line 2: It is used to demonstrate the cat command.
Line 3: The cat command displays the full content.
Line 4: This file is short enough to read easily.
Line 5: End of the sample file.

Для больших файлов понадобятся более подходящие инструменты.

Просмотр начала файла (head)

Иногда нужно проверить только заголовок или первые несколько строк. В таких случаях используется head. Эта команда показывает «голову» файла, то есть его начало.

По умолчанию head выводит первые 10 строк.

Такое значение удобно, потому что в начале файла часто находится контекст: заголовок, комментарии, названия столбцов или первые записи. Иными словами, head позволяет быстро ознакомиться с содержимым файла.

Посмотрим файл /etc/passwd. Это большой системный файл, содержащий сведения о пользователях.

head /etc/passwd

На экране должны появиться только первые 10 строк.

Настройка области просмотра

Что делать, если нужны только первые 5 строк? С помощью параметра -n (number, «количество») можно указать head, сколько строк вывести.

head -n 5 /etc/passwd

Это удобный способ быстро ознакомиться с файлом, не читая его целиком.

Просмотр конца файла (tail)

Если head показывает начало файла, то tail показывает его конец. Команда tail выводит последние строки файла.

В Linux записи в журналы добавляются последовательно. Самая новая запись всегда находится внизу. Поэтому, если проблема возникла прямо сейчас, сообщение об ошибке, скорее всего, будет в конце файла.

Именно поэтому tail так тесно связан с эксплуатацией систем. Журналы часто растут за счёт добавления новых строк, поэтому конец файла с наибольшей вероятностью содержит сведения о текущей проблеме.

Проверим системный журнал /var/log/syslog.

tail /var/log/syslog

Вы увидите последние 10 записей.

Как и в случае с head, можно ограничить количество выводимых строк. Чтобы увидеть последние 5 событий, выполните:

tail -n 5 /var/log/syslog

Это одна из основных команд системного администратора. Когда сервер выходит из строя, первой обычно вводят именно tail.

Мониторинг журналов в реальном времени (tail -f)

Статические файлы могут показаться скучными, а наблюдать за данными в реальном времени гораздо интереснее. У команды tail есть параметр -f, который означает follow — «отслеживать».

При использовании -f команда tail ожидает новые данные. Если программа записывает в файл новую строку, tail сразу перехватывает её и выводит на экран. Это похоже на просмотр бегущей строки новостей.

Здесь терминал впервые начинает ощущаться не как статичное окно, а как интерактивный инструмент. Вместо чтения готового файла вы наблюдаете, как события появляются по мере работы программы.

Выполним это упражнение в двух терминалах.

Терминал 1 (наблюдатель)

Начните отслеживать файл журнала:

tail -f ~/project/app.log

Курсор перестанет возвращаться к приглашению оболочки. Может показаться, что терминал «завис», но на самом деле он ожидает новые записи.

Терминал 2 (источник событий)

Откройте второй терминал: нажмите кнопку + рядом с вкладками. В этот журнал мы добавим новую запись:

echo "New log entry at $(date)" >> ~/project/app.log

Быстро вернитесь в Терминал 1. Вы увидите появившееся сообщение.

Перейдите обратно в Терминал 2 и добавьте ещё несколько событий:

echo "Another event happened" >> ~/project/app.log
echo "System is running smoothly" >> ~/project/app.log

Сразу после нажатия Enter в Терминале 2 текст появится в Терминале 1. Так инженеры наблюдают за работой серверов в реальном времени.

Завершив упражнение, вернитесь в Терминал 1. Нажмите Ctrl+C, чтобы остановить отслеживание и вернуться к приглашению оболочки.

Итоги

Поздравляем! Теперь у вас есть базовый набор команд для просмотра файлов в Linux.

  • cat: читает весь файл целиком. Подходит для небольших файлов.
  • head: читает начало файла. Подходит для быстрой проверки.
  • tail: читает конец файла. Особенно полезна для журналов.
  • tail -f: отслеживает файл в реальном времени.

С помощью этих команд вы можете ответить на вопрос: «Что находится внутри этого файла?»