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 проти 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 застосовується лише в межах поточного файлу, але ви можете повторювати його по файлах вручну.

Робота з кількома файлами та іменованими pipe

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

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

Він також коректно працює з іменованими pipe (FIFO) та підстановкою процесів, що корисно в розширених сценаріях shell-скриптів:

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

Це відкриває виведення journalctl так, ніби це файл, з повною можливістю прокрутки назад — чого звичайний pipe не підтримує для зворотної навігації в усіх середовищах shell.

Реальні граничні випадки та підводні камені

Бінарні файли: Запуск 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 через pipe, коди кольорів є керуючими послідовностями ANSI. Без -R less відображає їх як необроблені керуючі символи. Завжди використовуйте less -R при передачі кольорового виведення через pipe.

LESSOPEN та LESSCLOSE: Ці змінні середовища визначають скрипти препроцесора та постпроцесора, які less запускає для файлів перед їх відображенням. На правильно налаштованій системі це дозволяє less прозоро відображати вміст архівів, PDF та навіть зображень (у вигляді ASCII-арту). Це маловідома функція зі значними діагностичними можливостями.

Постійне налаштування less за допомогою змінної середовища LESS

Замість того щоб щоразу вводити прапорці, ви можете встановити параметри за замовчуванням через змінну середовища LESS у профілі вашого shell (~/.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; його відсутність призводить до нечитабельних керуючих послідовностей.
  • Режим відстеження (клавіша F) забезпечує функціональність tail -f з додатковою можливістю прокрутки назад по буферизованому вмісту.
  • Регулярні вирази підтримуються нативно в шаблонах пошуку — не потрібно попередньо фільтрувати за допомогою grep для пошуку за шаблоном.
  • Встановіть export LESS="-NiRMS" у профілі вашого shell для глобального застосування розумних параметрів за замовчуванням.
  • Використовуйте 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" у профілі вашого shell — для коректного відображення кольорів.

Чи доступний less на всіх дистрибутивах Linux?

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

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати