Есть ли какая-либо страница руководства по цветному выводу оболочки?

Есть ли какая-либо страница руководства по цветному выводу оболочки?

Знаете, это цветной вывод, создаваемый специальными последовательностями символов, например:

echo -e "\e[34m Hello\n \e[0m"

Это даст слово "Hello", окрашенное в синий цвет. Чтобы сделать это, мне пришлось поискать в Интернете, и это сложно, потому что разные источники могут говорить что-то разное. Я думал, что должны быть какие-то руководства, но я не смог их найти. Даже с apropos colorили чем-то похожим. Итак, вопрос - где я могу найти надежные руководства?

решение1

Источников информации слишком много, чтобы перечислить их на этой странице:

  • Команда echo -eиспользуетрасширениедля отображения \eв виде ASCII 27 (восьмеричное 33 или "\033"). Портативный способ печати этих используетprintf(POSIX). Сравните со стандартомecho(POSIX).
  • Ваш пример можно переписать как

    printf "\033[34m Hello\n \033[0m"

  • стандарт для цветных побегов -ЕСМА-48(Функции управления для кодированных наборов символов).
  • В ECMA-48, 8.3.117 SGR - SELECT GRAPHIC RENDITION перечислены управляющие последовательности для установки 8 цветов переднего плана и 8 цветов фона.
  • В нем также перечислены коды 39/49 «цвет дисплея по умолчанию (определяется реализацией)» и 38/48 «зарезервированы для будущей стандартизации; предназначены для установки цвета переднего плана символов, как указано в ISO 8613-6 [Рекомендация CCITT T.416]». То есть, есть рекомендация другой организации, но она не была (пока, спустя 24 года) сделана частью стандарта.
  • Внимательно читая его, вы можете заметить, что стандарт во многих местах расплывчат, что позволяет трактовать его по-разному. Он описываетсинтаксисэтих контрольных последовательностей, но не описывает ихповедение. Для этого вам необходимо обратиться к документации по соответствующим терминалам.
  • Документация по xterm находится вПоследовательности управления XTerm, что предполагает знакомство с документацией DEC, размещенной наhttp://vt100.net
  • для других терминалов их страницы руководства могут перечислять элементы управления (как это сделано для консоли Linux вconsole_codes).
  • другие терминалы документируют себя как «xterm»; для обсуждения см. xterm FAQСравнение версий путем подсчета контролей. К счастью, управление цветомпо большей частисовместимо (но см. FAQ по ncurses)Мой терминал показывает некоторые неокрашенные пространства).
  • Вы также можете прочитать страницы руководства дляtput, что позволяет вам использоватьterminfoВозможности в скрипте оболочки. Ваш пример можно переписать как

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • несколько источников, таких какBash Prompt HOWTOиРасширенное руководство по написанию сценариев Bashупоминают цвет, но (даже они), как правило, имеют пробелы и упущения и не являются полезными в отношении ECMA-48.

  • большинство других источников, которые вы найдете с помощью веб-поиска, копируют из других источников (например, из тех, что цитируются) и т. д., и, как правило, уделяют мало внимания фактическому стандарту.

Связанный контент