Изменить цвет шрифта в команде echo в зависимости от цвета фона терминала

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

В настоящее время я просто печатаю строку белым цветом, например: echo -e "$(tput setaf 7)my string here".

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

Заранее спасибо!


person Alex Kleiman    schedule 07.09.2014    source источник
comment
Есть ли причина не устанавливать цвет фона для текста?   -  person Ignacio Vazquez-Abrams    schedule 07.09.2014
comment
Не особо убедительный. Это, безусловно, возможность, и единственная причина, по которой я не хочу этого делать, - это эстетические соображения. Опять же, это сценарий bash, поэтому, если мне придется прибегнуть к нему, это не будет концом света :)   -  person Alex Kleiman    schedule 07.09.2014
comment
Это зависит от того, какой терминал вы используете. Этот пост может помочь unix.stackexchange.com/questions/1755/.   -  person John B    schedule 07.09.2014
comment
См. Также: Есть ли способ определить цвет фона терминала?   -  person David C. Rankin    schedule 07.09.2014


Ответы (1)


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

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

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

person K-Jtan    schedule 07.09.2014
comment
Нет причин использовать echo в этих командах. tput выводит необработанные управляющие последовательности, а не экранированные последовательности, такие как echo -e интерпретирует. - person Etan Reisner; 07.09.2014