linux view-edit

less

Интерактивный постраничный просмотр файлов с поиском и навигацией

Описание

less — интерактивная программа для постраничного просмотра текстовых файлов в терминале. Название — игра слов: «less is more» («меньше значит больше»), намекающая на то, что less является улучшенной версией более ранней утилиты more. Написана Марком Нудельманом (Mark Nudelman) в 1983 году и с тех пор стала стандартом де-факто для просмотра файлов в Unix-системах.

Главное преимущество less перед cat — возможность свободной навигации: вперёд и назад по файлу, поиск по регулярным выражениям, переход к определённой строке. При этом less не загружает весь файл в память — он читает его порциями, поэтому одинаково хорошо работает как с небольшими конфигами, так и с гигабайтными лог-файлами.

less широко используется как пейджер по умолчанию во многих системных командах: man, git log, git diff, systemctl status и других. Умение эффективно работать с less значительно ускоряет работу в терминале.

Синтаксис

less [ОПЦИИ] [ФАЙЛ]...

Компоненты команды:

Основные горячие клавиши внутри less

Space / f — следующая страница
b — предыдущая страница
/ j — следующая строка
/ k — предыдущая строка
g — начало файла
G — конец файла
/pattern — поиск вперёд
?pattern — поиск назад
n — следующее совпадение
N — предыдущее совпадение
q — выход
F — режим слежения (как tail -f)
Ng — перейти к строке N
= — показать позицию в файле
h — справка по клавишам
v — открыть в редакторе
# Открыть файл less /var/log/syslog # Открыть с поиском с места запуска less +/ERROR /var/log/app.log # Открыть несколько файлов (переключение: :n и :p) less file1.txt file2.txt file3.txt # Получить вывод команды через конвейер dmesg | less git log | less

Флаги и опции

Флаг Описание Пример
-N Показывать номера строк слева. Удобно при просмотре кода или конфигов. less -N script.py
-i Регистронезависимый поиск: паттерн в нижнем регистре будет искать строки без учёта регистра. less -i log.txt
-I Полностью нечувствительный к регистру поиск (работает даже если паттерн содержит заглавные буквы). less -I file.txt
-S Не переносить длинные строки — горизонтальная прокрутка вместо переноса. Удобно для широких CSV или логов. less -S data.csv
-F Если файл умещается на один экран — вывести его и сразу выйти (как cat), иначе открыть интерактивный просмотр. less -F short.txt
-X Не очищать экран при выходе — содержимое файла остаётся в терминале. Полезно при просмотре коротких выводов. less -X file.txt
-R Интерпретировать ANSI escape-коды (цвета). Обязателен при просмотре цветного вывода команд через конвейер. git diff | less -R
-p pattern Открыть файл и сразу перейти к первому вхождению указанного шаблона. less -p ERROR app.log
-n Отключить нумерацию строк (ускоряет работу с очень большими файлами). less -n huge.log
+F Запустить в режиме слежения (аналог tail -f) — файл будет обновляться при изменениях. Выход из режима: Ctrl+C. less +F /var/log/syslog
-e Автоматически выйти при достижении конца файла (при второй попытке листать вниз). less -e file.txt
-G Отключить подсветку найденных строк при поиске. less -G file.txt

Паттерны использования

Просмотр лог-файлов

Стандартный сценарий: открыть большой лог и найти ошибки:

# Открыть системный лог
less /var/log/syslog

# Внутри less нажмите / и введите:
/ERROR
# Переход между совпадениями: n / N

# Или сразу открыть с поиском
less +/ERROR /var/log/syslog

Просмотр вывода git

less как пейджер для git-команд с сохранением цветов:

# git использует less автоматически
git log --oneline --graph
git diff HEAD~1

# Принудительно с цветами
git log --color=always | less -R

# Поиск коммита по сообщению
git log | less
# внутри: /fix bug

Режим слежения за файлом

Следить за обновлениями лога в реальном времени (аналог tail -f):

# Открыть и следить за обновлениями
less +F /var/log/nginx/access.log

# Преимущество перед tail -f:
# можно нажать Ctrl+C и вернуться
# к обычной навигации по файлу,
# затем снова нажать F — продолжить следить

Просмотр нескольких файлов

Открыть несколько файлов и переключаться между ними:

# Открыть несколько файлов
less config.yml schema.sql README.md

# Внутри less:
# :n  — следующий файл
# :p  — предыдущий файл
# :e filename — открыть другой файл
# Внизу экрана: имя текущего файла

Просмотр man-страниц

man использует less как пейджер — все клавиши работают:

# Открыть документацию команды
man grep
man bash

# Клавиши те же, что в less:
# /pattern  — поиск по man-странице
# n         — следующее совпадение
# q         — выйти из man

Горизонтальная прокрутка широких файлов

Для широких CSV, TSV или длинных строк кода:

# Отключить перенос строк
less -S wide_data.csv

# Горизонтальная прокрутка:
# ← → или стрелки влево/вправо
# Shift+→ — прокрутить на половину экрана

# Комбинация флагов для удобства
less -SN access.log

Советы и предупреждения

Совет: переменная окружения LESS
Добавьте в ~/.bashrc строку export LESS="-RiSF", чтобы less всегда запускался с вашими любимыми флагами: цветовые коды, нечувствительный поиск, без переноса строк, автовыход для коротких файлов.
Совет: less как замена tail -f с возможностью прокрутки
В отличие от tail -f, в режиме less +F вы можете нажать Ctrl+C, проверить предыдущие записи лога, а затем нажать F снова, чтобы вернуться в режим слежения. Это делает less более гибким инструментом для мониторинга логов.
Совет: метка (mark) для быстрого возврата
Внутри less нажмите m и затем любую букву, чтобы поставить метку в текущей позиции. Для возврата к метке нажмите ' (апостроф) и ту же букву. Удобно при работе с большими файлами.
Предупреждение: двоичные файлы
Не открывайте бинарные файлы в less без флага -f (force). less предупредит вас, если файл выглядит как бинарный. Для просмотра бинарных данных используйте xxd или hexdump.