Это представляется возможным. например:
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