15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
10.11.2023

Команда `less` в Linux: полное руководство с синтаксисом, параметрами и практическими примерами использования

Команда less в Linux — это утилита постраничного просмотра на основе терминала, которая позволяет интерактивно просматривать содержимое текстовых файлов и вывод команд, не загружая весь файл в память. В отличие от текстовых редакторов, таких как Vim или Nano, less открывает файлы в режиме только для чтения с постраничным отображением, что делает его основным инструментом для просмотра больших лог-файлов, конфигурационных файлов и потоков вывода команд в любой Unix-подобной системе.

Если коротко: less filename открывает любой текстовый файл в интерактивном прокручиваемом просмотрщике. Вы можете перемещаться вперёд и назад, искать шаблоны и корректно выходить — всё это без изменения файла.

Почему less важен для системных администраторов

При управлении Linux-сервером вам регулярно приходится работать с файлами, содержащими тысячи строк — журналы приложений, сообщения ядра, журналы доступа Apache или Nginx, дампы конфигураций и многое другое. Открывать их в полноценном редакторе расточительно и сопряжено с риском случайного изменения. Пейджер less загружает содержимое по требованию, то есть считывает только ту часть файла, которая отображается в данный момент. Это делает его исключительно эффективным для файлов размером в гигабайты.

Это принципиально отличается от таких команд, как cat, которая выводит весь файл на стандартный вывод сразу, или head/tail, которые показывают только фиксированную часть. less даёт полный интерактивный контроль над навигацией без какого-либо потребления памяти, пропорционального размеру файла.

Если вы управляете средой VPS Хостинга или Выделенным сервером, less станет одним из наиболее часто используемых диагностических инструментов в вашей повседневной работе — особенно при просмотре /var/log/syslog, /var/log/auth.log или каталогов логов конкретных приложений.

less vs. more: техническое сравнение

Команда more появилась раньше less и является её концептуальным предшественником. Хотя обе являются пейджерами, их возможности существенно различаются. Название «less» — намеренная Unix-шутка: *less is more than more* («меньше — это больше, чем больше»).

Функцияlessmore
Прокрутка вперёдДаДа
Прокрутка назадДаНет
Навигация клавишами со стрелкамиДаОграниченно
Поиск вперёд (/pattern)ДаДа
Поиск назад (?pattern)ДаНет
Переход к номеру строкиДаНет
Процент прочитанного файлаДаНет
Поддержка pipeДаДа
Открытие нескольких файловДаНет
Использование памяти для больших файловПостоянное (по требованию)Выше
Доступность на минимальных системахИногда не предустановленПрисутствует почти всегда

Практический вывод: используйте more только тогда, когда less недоступен — например, на крайне урезанных образах контейнеров или устаревших встраиваемых системах. Во всех остальных случаях less однозначно предпочтительнее.

Базовый синтаксис

less [OPTIONS] filename

Вы также можете передавать вывод напрямую в less через pipe:

command | less

Примеры:

less /var/log/syslog
grep "error" /var/log/nginx/access.log | less
dmesg | less
cat /etc/nginx/nginx.conf | less

Паттерн с pipe особенно мощный. Любая команда, производящая объёмный вывод — ps aux, netstat -tulnp, find / -name "*.conf" — становится управляемой при передаче в less.

Стандартные сочетания клавиш для навигации

Находясь внутри less, следующие сочетания клавиш управляют навигацией. Это не опциональные флаги — это интерактивные команды, которые вы вводите, пока файл открыт.

КлавишаДействие
Space или fПрокрутить вперёд на один полный экран
bПрокрутить назад на один полный экран
Down arrow или jПрокрутить вперёд на одну строку
Up arrow или kПрокрутить назад на одну строку
dПрокрутить вперёд на полэкрана
uПрокрутить назад на полэкрана
gПерейти в начало файла
GПерейти в конец файла
nG или ngПерейти к строке n
/patternПоиск вперёд по шаблону
?patternПоиск назад по шаблону
nПовторить последний поиск в том же направлении
NПовторить последний поиск в обратном направлении
qВыйти из less
hПоказать экран справки
FРежим слежения — аналог tail -f, транслирует новое содержимое

Клавиша F (режим слежения) заслуживает особого внимания. Она превращает less в монитор живых логов, эквивалентный tail -f, но с дополнительной возможностью нажать Ctrl+C для остановки слежения и последующей навигации назад по уже загруженному содержимому. Это то, чего tail -f не умеет.

Справочник параметров командной строки

Эти флаги передаются при вызове less из командной строки и изменяют его поведение до открытия файла.

ОпцияОписание
-NОтображать номера строк на левом поле
-nСкрыть номера строк (по умолчанию в некоторых системах)
-iПоиск без учёта регистра (игнорирует верхний/нижний регистр)
-IПоиск без учёта регистра, в том числе для самого шаблона
-SОбрезать длинные строки вместо переноса (полезно для широких CSV или лог-файлов)
-p patternОткрыть файл и перейти сразу к первому вхождению указанного шаблона
-cПерерисовывать экран сверху вместо прокрутки (уменьшает мерцание на медленных терминалах)
-gПодсвечивать только строку, найденную последним поиском, а не все совпадения
-GПолностью отключить подсветку результатов поиска
-FАвтоматически выходить, если весь файл помещается на одном экране
-XНе очищать экран при выходе из less (оставляет содержимое видимым в терминале)
-RОтображать управляющие последовательности ANSI для цветов (необходимо при передаче цветного вывода через pipe)
-eАвтоматически выходить при достижении второго конца файла
+nНачать с номера строки n
+/patternНачать с первого вхождения pattern (альтернативный синтаксис к -p)
-mПоказывать процент прочитанного файла в строке подсказки (как more)
-MПоказывать более подробную строку подсказки, включая номера строк и процент

Практические комбинации опций

Просмотр лог-файла с номерами строк, поиском без учёта регистра и без переноса строк:

less -NiS /var/log/apache2/error.log

Открыть файл и перейти сразу к первому вхождению «segfault»:

less -p "segfault" /var/log/kern.log

Передать цветной вывод команды через pipe с сохранением цветов:

grep --color=always "FAILED" /var/log/auth.log | less -R

Открыть файл и сразу выйти, если он помещается на одном экране:

less -F /etc/hosts

Поиск в less: продвинутые техники

Функция поиска в less поддерживает регулярные выражения, а не только буквальные строки. Это принципиальное различие, которое многие пользователи упускают из виду.

/error|warning|critical

Этот шаблон соответствует любой строке, содержащей «error», «warning» или «critical» — с использованием стандартного синтаксиса расширенных регулярных выражений POSIX. В сочетании с -i для отключения учёта регистра это становится мощным встроенным инструментом анализа логов без необходимости использовать grep в качестве препроцессора.

Поиск по нескольким файлам:

less file1.log file2.log file3.log

Используйте :n для перехода к следующему файлу и :p для возврата к предыдущему. Поиск /pattern применяется только в текущем файле, но вы можете повторять его по файлам вручную.

Работа с несколькими файлами и именованными каналами

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

less /var/log/syslog /var/log/kern.log /var/log/auth.log

Он также корректно работает с именованными каналами (FIFO) и подстановкой процессов, что полезно в продвинутых сценариях shell-скриптинга:

less <(journalctl -u nginx --since "1 hour ago")

Это открывает вывод journalctl как если бы это был файл, с полной поддержкой обратной прокрутки — чего обычный pipe не обеспечивает для навигации назад во всех окружениях командной оболочки.

Реальные граничные случаи и подводные камни

Бинарные файлы: Запуск less на бинарном файле (скомпилированные исполняемые файлы, сжатые архивы) приведёт к отображению нечитаемых символов и может вызвать предупреждение. Используйте less -f для принудительного открытия, но вывод будет в основном нечитаемым. Для просмотра бинарных данных правильным инструментом является xxd или hexdump.

Очень широкие строки: Лог-файлы, генерируемые некоторыми Java-фреймворками или приложениями с большим количеством JSON, часто содержат чрезвычайно длинные одиночные строки. Без -S less переносит эти строки, что затрудняет чтение. Флаг -S включает горизонтальную прокрутку клавишами со стрелками, что значительно удобнее.

Сжатые файлы: В системах с настроенным lesspipe (распространено в Debian/Ubuntu) less может прозрачно открывать файлы .gz, .bz2, .zip и другие сжатые форматы. Проверьте, включена ли эта функция, с помощью echo $LESSOPEN. Если не настроено, используйте zless (скрипт-обёртку) для файлов, сжатых gzip.

Потеря цветного вывода в pipe: При передаче вывода от таких инструментов, как grep --color, ls --color или diff, коды цветов представляют собой управляющие последовательности ANSI. Без -R less отображает их как необработанные escape-символы. Всегда используйте less -R при передаче цветного вывода через pipe.

LESSOPEN и LESSCLOSE: Эти переменные окружения определяют скрипты препроцессора и постпроцессора, которые less запускает для файлов перед их отображением. В правильно настроенной системе это позволяет less прозрачно отображать содержимое архивов, PDF-файлов и даже изображений (в виде ASCII-арта). Это недооценённая функция со значительной диагностической ценностью.

Постоянная настройка less с помощью переменной окружения LESS

Вместо того чтобы каждый раз вводить флаги, вы можете задать параметры по умолчанию через переменную окружения LESS в профиле вашей командной оболочки (~/.bashrc или ~/.zshrc):

export LESS="-NiRMS"

Это автоматически применяет -N (номера строк), -i (поиск без учёта регистра), -R (отображение цветов), -M (подробная строка подсказки) и -S (без переноса строк) к каждому вызову less. Это стандартная практика на производственных серверах, где анализ логов выполняется часто.

Использование less в shell-скриптах и автоматизации

Хотя less в первую очередь является интерактивным инструментом, он легко интегрируется в административные скрипты. Распространённый паттерн — вызывать его условно только при работе в интерактивном терминале:

if [ -t 1 ]; then
    some_command | less -R
else
    some_command
fi

Проверка -t 1 определяет, подключён ли стандартный вывод к терминалу. Это предотвращает блокировку less неинтерактивных конвейеров или заданий cron.

less в контексте управления серверами

На VPS с cPanel или в любой среде под управлением панели управления less остаётся незаменимым для администрирования через SSH даже при наличии графического интерфейса. Панели управления предоставляют ограниченный просмотр логов; прямой доступ по SSH с less даёт вам нефильтрованную видимость поведения системы в реальном времени.

При развёртывании Выделенных серверов для высоконагруженных приложений структурированные рабочие процессы анализа логов, построенные вокруг less, grep, awk и sed, составляют основу реагирования на инциденты. Умение эффективно перемещаться по журналу доступа размером 2 ГБ без загрузки его в память — это базовый навык системного администратора.

Для команд, управляющих инфраструктурой Email Хостинга, less является стандартным инструментом для просмотра почтовых логов Postfix (/var/log/mail.log) и логов аутентификации Dovecot, где построчная навигация назад необходима для отслеживания сбоев доставки.

Матрица быстрого выбора инструмента

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

СценарийРекомендуемый инструмент
Интерактивный просмотр большого лог-файлаless -NiS
Мониторинг лог-файла в реальном времениless +F или tail -f
Просмотр только последних N строкtail -n N
Просмотр только первых N строкhead -n N
Поиск и фильтрация без интерактивностиgrep
Просмотр сжатого файла .gzzless или less с lesspipe
Просмотр бинарного/hex-содержимогоxxd или hexdump
Просмотр с подсветкой синтаксисаbat (сторонний пейджер)
Быстрый вывод небольшого файлаcat
Минимальная система, less недоступенmore

Ключевые технические выводы

  • less загружает содержимое файла по требованию — потребление памяти не зависит от размера файла, что делает его безопасным для файлов размером в несколько гигабайт.
  • Флаг -R обязателен при передаче цветного вывода через pipe; его отсутствие приводит к нечитаемым escape-последовательностям.
  • Режим слежения (клавиша F) обеспечивает функциональность tail -f с дополнительной возможностью прокрутки назад по буферизованному содержимому.
  • Регулярные выражения поддерживаются в шаблонах поиска нативно — нет необходимости предварительно фильтровать с помощью grep для сопоставления шаблонов.
  • Задайте export LESS="-NiRMS" в профиле вашей командной оболочки для глобального применения разумных настроек по умолчанию.
  • Используйте less <(command) с подстановкой процессов для полноценной интерактивной навигации по выводу команд, включая прокрутку назад.
  • Переменная LESSOPEN обеспечивает прозрачную декомпрессию и преобразование форматов — убедитесь, что она настроена на ваших серверах.
  • Никогда не используйте cat для больших файлов, когда доступен less; это переполняет буфер терминала и не предоставляет никаких возможностей навигации.

Часто задаваемые вопросы

В чём разница между less и cat в Linux?

cat выводит всё содержимое файла на стандартный вывод сразу, без интерактивности или разбивки на страницы. less открывает файл в интерактивном пейджере, где можно прокручивать, искать и перемещаться. Для любого файла длиннее высоты терминала less является правильным инструментом.

Может ли less редактировать файлы?

Нет. less является исключительно просмотрщиком только для чтения. Он не изменяет файлы ни при каких обстоятельствах. Для редактирования используйте vim, nano или другой текстовый редактор.

Как найти слово в less?

Пока файл открыт в less, введите /word и нажмите Enter для поиска вперёд. Используйте ?word для поиска назад. Нажмите n для перехода к следующему совпадению и N для перехода к предыдущему. Поиск поддерживает регулярные выражения.

Почему less показывает нечитаемые символы при передаче цветного вывода через pipe?

Управляющие последовательности ANSI для цветов по умолчанию не отображаются. Передайте флаг -R — либо как less -R, либо задав export LESS="-R" в профиле командной оболочки — для корректного отображения цветов.

Доступен ли less во всех дистрибутивах Linux?

less включён по умолчанию практически во всех основных дистрибутивах Linux, включая Debian, Ubuntu, CentOS, RHEL, Fedora и Arch Linux. На минимальных базовых образах Docker или Alpine Linux его может потребоваться установить явно с помощью apk add less или эквивалентной команды менеджера пакетов.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать