Cambiar el color de una letra específica en el nombre de usuario en la PS1 de bash

9

Quiero cambiar el color de una letra específica en mi nombre de usuario que PS1 muestra en bash.

Por ejemplo: si \ues así rahul, me gustaría que la letra hsea ​​de color azul y que el resto sea de color blanco.

Yo sé que \use refiere al nombre de usuario y la adición de un color a toda una 'entidad' se lleva a cabo mediante la adición de etiquetas como: [\033[38;5;15m\].

Si es posible, ¿puedo saber cómo hacer lo mismo?

Rahul Bharadwaj
fuente

Respuestas:

13

Si no le importa no usar el \uescape, puede hacerlo así:

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

Esto establecerá el mensaje solo para el nombre de usuario y un espacio. El primer carácter del nombre de usuario será rojo. Esto funciona expandiendo la $USERvariable dos veces con un rango específico. La primera vez que el rango es de 0 a 1. La segunda vez es de 1 (el segundo carácter) hasta el final.

Para obtener el mensaje que solicitó, use esto:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
Sebastian Stark
fuente
1
Puede omitir la longitud para imprimir toda la cadena que comienza con desplazamiento : ${USER:1}para todo el nombre de usuario, excepto el primer carácter. Buena solución! ¿Puedes mostrar también cómo cambiar el color del tercer personaje, como lo solicitó OP?
postre
1
Uno puede probar cosas así con echo -e, por ejemploecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
postre
2
¿Esto tiene que funcionar con varios nombres de usuario diferentes (por ejemplo, resaltar la tercera letra para todos)? Si es sólo para usted, un enfoque más simple es sólo para codificar las letras de su nombre de usuario, por ejemplo, raen lugar de ${USER:0:2}, etc.
egmont
La codificación rígida de @egmont casi nunca es la mejor manera, pero ciertamente es mucho más simple. De esta manera, puede soltar el código en un archivo de configuración global o compartirlo con otros. Y maneja el caso cuando se cambia el nombre de su cuenta.
Sebastian Stark
1
Personalmente comparto mi propia configuración de shell entre tres cuentas con nombres diferentes. Pero tal vez no deberíamos entrar en filosofía aquí :)
Sebastian Stark