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