истинные цвета в Bash подскажите?

656
ronakg

Можно ли использовать настоящие цвета в приглашении bash? Я использую iTerm2 на MacOS, который поддерживает настоящие цвета. Но не уверен, как я использую истинные цвета для моей подсказки bash.

На данный момент я использую tput af <number>в моем приглашении bash, чтобы получить цвета.

4
Это может зависеть от того, какие терминалы iTerm2 претендует на эмуляцию и могут ли эти терминалы обрабатывать 24-битный цвет. Это также может зависеть от того, что говорит база данных termcap или terminfo для этих терминалов. Spiff 7 лет назад 0

1 ответ на вопрос

1
Peter Westmacott

Это представляется возможным. например:

export PS1="\[$(printf "\x1b[48;2;15;100;50m\]A nice dark green [rgb(15,100,50)]:\[\x1b[0m")\] "

export PS1="\[$(printf "\x1b[38;2;255;100;250m\]A lovely shade of pink [rgb(255,100,250)]:\[\x1b[0m")\] "

Возможно, есть более хороший способ, чем обращение к $ (printf ...). Я надеюсь, что есть, но я этого не знаю. Ключ заключается в том, чтобы обернуть все «мета» (но не фактический контент) в оболочку \[и не \]дать оболочке считать ее как часть длины приглашения, чтобы она хорошо воспроизводилась при перерисовке (например, при циклическом перемещении по истории).

Последние три числа в каждом \x1b[...mвыражении представляют желаемые значения красного, зеленого и синего (от 0 до 255).

Первое число устанавливает фон (48) или передний план (38). Я не знаю, что делает другое число, но игра с этим добавлением дополнительного, \x1b[38;4mкажется, подчеркивает текст.

Возможно, вы сможете почерпнуть больше из этой суть: https://gist.github.com/XVilka/8346728