Altera a cor de uma letra específica no nome de usuário no PS1 do bash

9

Eu quero mudar a cor de uma letra específica no meu nome de usuário que está sendo exibido pelo PS1 no bash.

Por exemplo: se meu \u for rahul , gostaria que a letra h estivesse na cor azul e o resto fosse branco.

Eu sei que \u refere-se ao nome de usuário e adicionar uma cor a uma entidade inteira é feito adicionando tags como: [3[38;5;15m\] .

Se for possível, posso saber como fazer o mesmo?

    
por Rahul Bharadwaj 14.03.2018 / 13:51

1 resposta

13

Se você não se importa em não usar o \u escape, você pode fazer assim:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Isso definirá o prompt apenas para o nome de usuário e um espaço. O primeiro caractere do nome de usuário será vermelho. Isso funciona expandindo a variável $USER duas vezes com um intervalo específico. A primeira vez que o intervalo é apenas de 0 a 1. A segunda vez é de 1 (o segundo caractere) até o final.

Para obter o prompt como você solicitou, use:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
    
por Sebastian Stark 14.03.2018 / 14:02