Как просматривать содержимое файлов?
Для просмотра содержимого файлов в Linux существует несколько утилит, каждая из которых подходит для своего сценария: cat для коротких файлов, less для больших, head/tail для начала или конца.
cat — полный вывод
cat (concatenate) — выводит всё содержимое файла целиком:
Пример
cat file.txt # Вывести содержимое файла
cat -n file.txt # С нумерацией строк
cat file1.txt file2.txt # Конкатенация нескольких файлов
cat file1.txt file2.txt > merged.txt # Объединить в новый файл
less — постраничный просмотр
less — рекомендуется для больших файлов, поддерживает навигацию в обе стороны:
Навигация в less
less logfile.log
# Навигация в less:
# Space / f — страница вперёд
# b — страница назад
# /pattern — поиск вперёд
# ?pattern — поиск назад
# n — следующее совпадение
# N — предыдущее совпадение
# g — в начало файла
# G — в конец файла
# q — выход
# -N — показать/скрыть номера строк
more — простой постраничный просмотр
more — упрощённая версия less, умеет прокручивать только вперёд:
Пример
more file.txt
# Space — страница вперёд
# Enter — строка вперёд
# q — выход
head — начало файла
Пример
head file.txt # Первые 10 строк (по умолчанию)
head -n 20 file.txt # Первые 20 строк
head -n -5 file.txt # Все строки, кроме последних 5
head -c 100 file.txt # Первые 100 байт
tail — конец файла
Пример
tail file.txt # Последние 10 строк
tail -n 20 file.txt # Последние 20 строк
tail -n +5 file.txt # Всё, начиная с 5-й строки
tail -f /var/log/app.log # Следить за файлом в реальном времени (follow)
tail -f -n 100 app.log # Последние 100 строк + следить за обновлениями
tail -f— одна из самых полезных команд для Java-разработчика при отладке: позволяет в реальном времени наблюдать за логами приложения. Для нескольких файлов одновременно используйтеtail -f app.log error.logилиmultitail.
nl — нумерация строк
Пример
nl file.txt # Нумерует только непустые строки
nl -ba file.txt # Нумерует все строки, включая пустые
На собеседовании: интервьюер ожидает, что вы знаете
tail -fдля мониторинга логов и понимаете, когда использоватьcat, а когдаless. Частая ошибка — открывать гигабайтный лог черезcatвместоlessилиtail.