![Эквивалент «цвета a», «цвета b» в Windows на терминале bash](https://rvso.com/image/170632/%D0%AD%D0%BA%D0%B2%D0%B8%D0%B2%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%20%C2%AB%D1%86%D0%B2%D0%B5%D1%82%D0%B0%20a%C2%BB%2C%20%C2%AB%D1%86%D0%B2%D0%B5%D1%82%D0%B0%20b%C2%BB%20%D0%B2%20Windows%20%D0%BD%D0%B0%20%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B5%20bash.png)
В ОС 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: