Когда вывод не помещается на экран
Команды вроде ip route, ss -tan или netstat -an на загруженной машине печатают столько строк, что начало уходит за верхний край окна. Прокручивать терминал мышью можно, но поиск нужной строки так превращается в мучение. Постраничный просмотрщик less решает задачу: он показывает вывод по экрану и позволяет двигаться по тексту в обе стороны.
Использовать его просто: допишите в конце команды вертикальную черту и less, например ss -tan | less. Так же открывается и файл: less /var/log/syslog или любой другой журнал, к которому есть доступ. Файл less не загружает целиком, поэтому большие журналы открываются быстро.
Название связано со старой утилитой more, которая умела только листать вперёд. less пришла ей на смену и позволяет возвращаться назад, искать и переходить к нужной строке. Важный момент: пока less открыта, вы находитесь внутри программы, а не в командной строке, и команды оболочки туда вводить не нужно.
Клавиши навигации и поиска
Управление строится на одиночных клавишах. Основные из них собраны в таблицу.
| Клавиша | Действие |
|---|---|
| пробел или f | страница вниз |
| b | страница вверх |
| стрелки или j и k | строка вниз и вверх |
| g | перейти в начало |
| G | перейти в конец |
| /слово | искать вперёд |
| ?слово | искать назад |
| n и N | следующее и предыдущее совпадение |
| q | выйти |
Поиск понимает регулярные выражения, так что можно искать и по шаблону. Найденные места подсвечиваются. Ключ -i делает поиск нечувствительным к регистру, пока в шаблоне нет прописных букв. Включить его можно и внутри less: набрать -i и нажать Enter.
Полный перечень команд откроется по нажатию h. Это встроенная справка less, там же описаны менее частые возможности, например метки и переход по номеру строки.
Ключи запуска, которые меняют отображение
У less есть много опций, но на практике для работы с сетевым выводом пригодятся четыре.
- -S не переносит длинные строки, а обрезает их по ширине окна. Стрелки вправо и влево позволяют прокручивать текст по горизонтали. Это спасает таблицы ss и netstat, которые при переносе превращаются в кашу.
- -N показывает номера строк. Удобно, когда нужно сослаться на конкретное место при обсуждении с коллегой или в обращении в поддержку.
- -R передаёт цветовые коды терминалу, и цвет отображается как цвет, а не печатается набором символов ESC и скобок.
- -i ищет без учёта регистра, пока в шаблоне нет прописных букв.
Ключи комбинируются: ss -tan | less -SN. Постоянные значения можно задать через переменную окружения LESS, но если вы не уверены, как она настроена на машине, лучше задавать ключи в самой команде, чтобы результат был предсказуемым.
Режим слежения: клавиша F и ключ +F
Внутри less нажатие F включает режим слежения: просмотрщик переходит в конец файла и показывает новые строки по мере их появления, как tail -f. Выйти из режима слежения можно сочетанием Ctrl+C, при этом вы остаётесь в less и можете продолжить поиск по накопленному тексту. Тот же режим запускается ключом +F: less +F файл.
Это даёт преимущество перед чистым tail -f: когда в журнале мелькнуло интересное событие, вы прерываете слежение, листаете назад, ищете слово и затем снова нажимаете F. В tail -f такого выбора нет, прокручивать приходится средствами терминала.
Есть и ограничение: если вывод идёт по конвейеру от долгой команды, less может ждать, пока команда закончит работу или накопит достаточно данных. Для бесконечных потоков вроде непрерывного ping надёжнее писать вывод в файл и открывать файл.
Типичные затруднения
Ситуация первая: вывод выглядит как набор непонятных символов вида ESC и скобок. Это цветовые коды. Запустите less с ключом -R или отключите цвет у самой команды.
Ситуация вторая: поиск ничего не находит, хотя слово есть на экране. Проверьте регистр, наличие спецсимволов в шаблоне и то, что вы ищете именно в нужном направлении. Знак вопроса ищет назад от текущей позиции, и если вы уже в начале файла, результата не будет.
Ситуация третья: команда не выходит. Нажмите q, это основная клавиша выхода. Ctrl+C внутри less обычно прерывает только текущее действие, например долгий поиск, но не закрывает программу.
Ситуация четвёртая: вы хотите сохранить найденное. less ничего не записывает сам. Скопируйте строки средствами терминала или вернитесь к исходной команде, отфильтруйте нужное через grep и перенаправьте результат в файл или в tee. Если вывод объёмный и нужны только первые строки, достаточно head, а не просмотрщика: так проще и быстрее.
Связки less с другими командами
less чаще всего стоит в самом конце конвейера, после всех фильтров: сначала сужают поток, потом листают то, что осталось. Несколько готовых вариантов.
- ip route | less -N — таблица маршрутов с номерами строк, если записей много.
- ss -tan | grep ESTAB | less -S — установленные соединения без переноса длинных строк.
- dig example.com TXT | less — ответ с длинным списком записей, который нужно пролистать.
- less +G файл — открыть файл сразу в конце, откуда удобно искать назад клавишей ?.
- less +/слово файл — открыть файл и сразу перейти к первому совпадению.
Для экономии времени запомните порядок: фильтр, затем просмотр. Если нужно только узнать число строк, лучше wc -l, а для первых нескольких строк head: они выдают результат на экран и не требуют выхода по q. Просмотрщик оправдан там, где предстоит читать, искать и возвращаться назад.
Учтите ещё одну деталь: в некоторых системах команда man по умолчанию тоже показывает страницы через less, поэтому клавиши из таблицы выше работают и в справке.