Очистка строки имеет лишь косвенное отношение к изменению цветов терминала: если вы измените цвет фона, то многие терминалы (Linux console, rxvt, xterm, а также программы, имитирующие одну из них) окрасят очищенную область фона в этот цвет.
less
действительно использует несколько операций очистки, но не \x1b[2K
. Читая source, можно заметить, что он использует несколько функций с помощью интерфейса termcap. Наиболее значимые части описаны на странице руководства terminfo(5):
clr_bol el1 cb Clear to beginning
of line
clr_eol el ce clear to end of line
(P)
Это \x1b[K
и \x1b[K
, для el1
и el
, соответственно. Не существует обычной возможности termcap el2
, и (если вы не скажете less
просто передавать содержимое файла с помощью опции -r
или -R
), less
не пошлет \x1b[2K
.
То же самое верно и для more
, например, как в пакете util-linux
: он использует только возможности termcap. В отличие от less
, more
не имеет опции для отправки непечатных символов непосредственно на терминал.
Если вы используете -r
или -R
опцию less
, вы должны помнить, что она ограничена: less
не знает (или не очень заботится), что делают эти эскейпы. Из руководства:
-r
или--raw-control-chars
Вызывает отображение "сырых" управляющих символов. По умолчанию управляющие символы отображаются используя кареточную нотацию; например, управляющий символ A (восьмеричный 001) отображается как "^A". Предупреждение: при использовании опции-r
,less
не может отслеживать фактический вид экрана (поскольку это зависит от того, как экран реагирует на каждый тип управляющего символа). Таким образом, могут возникнуть различные проблемы с отображением, например, длинные строки будут разделены в неправильном месте.
Эта функция называется Завершение командной строки и хорошо документирована в Интернете.
Способ его определения и настройки зависит от того, какую оболочку вы используете.