Эквивалент «цвета a», «цвета b» в Windows на терминале bash

Эквивалент «цвета a», «цвета b» в Windows на терминале bash

В ОС Windows я могу ввести просто color aили color bили color cи т. д., чтобы временно изменить цвет шрифта в терминале.

Есть ли команда для этого в терминале bash?

Я не хочу вносить постоянные изменения, достаточно только для открытой сессии.

решение1

Вы имеете в видукомандакоторый ожидает значения 0-f (т.е. от 0 до 15 в десятичной системе). Аналогичная команда будет использоватьtput:

tput setaf 10

("a" - шестнадцатеричное число для 10), дляпередний планцвет и

tput setab 10

дляфонцвет. Это отдельныетерминфовозможности.

Этот пример предполагает, что описание вашего терминала имеет не менее 16 цветов. Если у него только 8, tputвы этого не заметите, но результат будет неудовлетворительным. Вы можете увидеть это по

tput colors

По умолчанию tputиспользует текущее значение $TERMдля выбора описания терминала. Вы можете переопределить это с помощью -Tпараметра. Например, если вы используетеxterm(в отличие от некоторых других терминалов, которые устанавливаются TERMкак «xterm»), вы можете использовать xterm-16colorописание терминала, как показано на этом снимке экрана:

введите описание изображения здесь

(Вы, вероятно, видите, что tputстрока 15 не оказала никакого полезного эффекта, что и ожидалось, поскольку10находится за пределами диапазона 8 цветов).

Описание терминала, будь тоxtermилиxterm-16color(илиxterm-256color) рассказывает, tputкак создать escape-последовательность, которую можно записать в терминал. Ваша подсказка bash также может отправлять escape-последовательности, устанавливая или сбрасывая цвета. Если вы вызвали tputи отобразили текст в скрипте оболочки, вы можете увидеть цветной текст, в то время как те же команды (разделенные подсказками bash) могут вести себя по-разному. Кроме того, некоторые программы (например, ls) устанавливают/сбрасывают цвета. Существует только одно цветовое состояние терминала для совместного использования с этими различными приложениями; терминалы не переключаются между ними автоматически.

Тестирование скрипта оболочки более предсказуемо, чем полагаться на детали вашего приглашения оболочки. Вот пример

#!/bin/sh
case $TERM in
xterm*)
        TERM=xterm-256color
        ;;
linux*)
        TERM=linux-16color
        ;;
esac
export TERM
for p in $(seq 0 15)
do
        tput setab $p
        for q in $(seq 0 15)
        do
                tput setaf $q
                printf '%x%x' $p $q
        done
        tput sgr0
        printf '\n'
done

и скриншот в xterm:

введите описание изображения здесь

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