2014-09-07 6 views
0

Я пишу сценарий bash. Я хотел бы напечатать цветную строку на терминале с помощью команды echo и изменить цвет строки в зависимости от цвета фона терминала.Изменить цвет шрифта в команде echo на основе цвета фона терминала

Я сейчас просто печатаю строку в белом виде так: echo -e "$(tput setaf 7)my string here".

Есть ли способ распечатать строку в другом цвете, если цвет фона терминала также белый? Я бы предпочел не устанавливать цвет фона сам, чтобы убедиться, что моя строка видна.

Заранее благодарен!

+0

Есть ли причина не форсировать цвет фона для текста? –

+0

Не особенно привлекательный. Это, безусловно, возможность, и единственная причина, по которой я не хочу этого делать, - это эстетические соображения. Опять же, это сценарий bash, поэтому, если мне придётся прибегать к тому, что это не конец света :) –

+0

Это зависит от того, какой терминал вы используете. Это сообщение может помочь http://unix.stackexchange.com/questions/1755/change-the-ps1-color-based-on-the-background-color. –

ответ

1

Насколько я знаю, невозможно получить задний цвет терминала. Как сказал Джон Б в комментариях, это также зависит от используемого терминала.

Если вы хотите, чтобы определенный цвет фона вы можете использовать эту команду tput setab # где # число от 0 до 7. Затем вы можете сбросить цвет фона исходного цвета с помощью параметра op так: tput op

Эта ссылка может также помочь (для цветов и дополнительной документации по обработке цвета): http://linux.about.com/library/cmd/blcmdl5_terminfo.htm

+0

В этих командах нет причин использовать 'echo'. 'tput' выводит необработанные последовательности управления, а не экранированные последовательности, такие как' echo -e' интерпретирует. –

+0

@EtanReisner Спасибо, что вы только что обновили мой anwser –