Как использовать меньше в скрипте, не получая ESC escape-символов?

12

Когда я использую lessв командной строке вывод введите описание изображения здесь

но когда я использую lessизнутри bash-скрипт, я получаю: <code> [! [введите описание изображения здесь] [1]] [1] </ code>

Как я могу использовать lessв скрипте bash и не получить все escape-символы и заставить его работать так же, как в интерактивной командной строке?

Майкл Даррант
источник
1
У вас есть переменная окружения, имя которой начинается с LESSустановленного значения в вашей интерактивной оболочке, но не в вашем сценарии оболочки. Сделайте так, printenv | grep LESSчтобы узнать его личность, и затем вы также можете установить его в своем сценарии оболочки или использовать эквивалентные параметры командной строки.
zwol

Ответы:

29

Используйте -Rфлаг:

-r или --raw-control-chars

Вызывает отображение «сырых» управляющих символов. По умолчанию для отображения управляющих символов используется обозначение каретки; например, control-A (восьмеричное 001) отображается как «^ A». Предупреждение: когда используется опция -r, less не может отслеживать фактическое отображение экрана (поскольку это зависит от того, как экран реагирует на каждый тип управляющего символа). Таким образом, могут возникнуть различные проблемы с отображением, такие как длинные строки, разделенные в неправильном месте.

-R или -RAW-CONTROL-CHARS

Подобно -r, но только «цветные» escape-последовательности ANSI выводятся в «сыром» виде. В отличие от -r, внешний вид экрана поддерживается в большинстве случаев правильно. «Цветные» escape-последовательности ANSI представляют собой последовательности вида:

           ESC [ ... m

где "..." - это ноль или более символов спецификации цвета. В целях отслеживания появления экрана предполагается, что escape-последовательности цветов ANSI не перемещают курсор. Вы можете меньше думать, что символы, отличные от «m», могут завершать escape-последовательности цвета ANSI, устанавливая переменную окружения LESSANSIENDCHARS в список символов, который может завершить escape-последовательность цвета. И вы можете меньше думать о том, что символы, отличные от стандартных, могут появиться между ESC и m, установив переменную среды LESSANSIMIDCHARS в список символов, которые могут появиться.

С lessman-страницы.

coffeMug
источник