Unix Shell и цвета

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

То, в чем Вы нуждаетесь, - чтобы пейджер смог сделать переформатирование. Как @Robin Green сказал, это - HTML.

Если Вы хотите использовать HTML, но все еще работать в терминале, можно сказать man(1) произвести в HTML и назвать браузер текстового режима для отображения его.

man -Hlynx man

Это отобразится man(1) страница справочника в браузере текстового режима рыси. Lynx непосредственно не отвечает на изменения размера окна, но можно нажать ctrl-R, и рысь повторно представит страницу для нового размера окна.

Существует два других браузера текстового режима, о которых я знаю: ссылки и elinks. Вы могли экспериментировать с теми и рысью и определить, которые дают Вам лучший опыт для просмотра страниц справочника. Можно хотеть использовать пользовательскую конфигурацию только для страниц справочника и вызвать сценарий, который вызывает браузер с той определенной конфигурацией.

Можно поместить опции человека, которые Вы любите в MANOPT переменная среды.

$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # manlynx invokes lynx with a different configuration.

Необходимо будет установить groff пакет для man смочь генерировать HTML.

3
25.11.2018, 02:32
2 ответа

Этот отрывок используется для распечатывания имени хоста системы с синим фоном и зеленым шрифтом.

Для окраски оболочки Вы используете escape-последовательности особого цвета.

\e[ запускает цветовую схему, 32; выберет основной цвет к зеленому, 44 выберет цвет фона к синему и m закончит его.

$(command) создает новую оболочку, выполняет команду и возвращает результат (не возвращаемое значение).

hostname возвращает имя хоста существующей системы.

\e[m сбросит окраску вывода.

Из страницы справочника эха:

   -n     do not output the trailing newline
   -e     enable interpretation of backslash escapes

По моему скромному мнению, Ваш отрывок мог быть упрощен до echo -e "\e[32;44m $(hostname) \e[m";

См. главу 6.1 Цвета ПРАКТИЧЕСКОГО РУКОВОДСТВА Подсказки Bash для получения дополнительной информации.

10
27.01.2020, 21:08

см. http://en.wikipedia.org/wiki/Control_Sequence_Introducer для больше большего количества деталей

3
27.01.2020, 21:08

Теги

Похожие вопросы