Mi prompt
El inductor del sistema o prompt es una de las personalizaciones más habituales, especialmente para los que usamos mucho la línea de comandos.
En el prompt se puede meter una gran cantidad de información. De hecho, podemos hacerlo todo lo sencillo o complicado que queramos adaptándolo a nuestra forma de trabajar.
No voy a contarte cómo se personaliza un prompt. Para eso tienes Google donde encontrarás mil sitios que te lo explican con todo el lujo de detalles. Pero sí te voy a poner mi prompt, y el código que lo hace todo posible, por si te aporta alguna idea o te gusta lo bastante para usarlo o modificarlo y adaptarlo para tí.
Muchas veces pongo trabajos en segundo plano o uso screen directamente. Así que como es lógico mi prompt da información sobre ambas cosas. Por ejemplo, si entramos en screen veríamos el prompt así:
De izquierda a derecha, la información del prompt es la siguiente:
- Si estamos en screen, aparecerá la leyenda SCR para que el usuario lo sepa.
- El número de sesiones screen disponibles en esa máquina. Si son cero, no aparece nada.
- El número de jobs en segundo plano activos.
- El login y la máquina.
- El directorio actual.
- El código de error del último comando. Si hubo error, sale en rojo, si no en verde.
- Los colores no son al azar. Cada usuario del sistema tiene un color característico distinto a los demás: yo soy cian, el usuario maria es amarillo, root es rojo. Además, cada ordenador tiene tonalidades distintas: la máquina sophie es brillante, la máquina selene es atenuada.
Con este prompt, es virtualmente imposible que se te pasen desapercibidas cosas como el usuario que eres, la máquina en la que estás, si estás en sesión screen o tienes algún screen colgando, si eres root, si hay trabajos en segundo plano... bonito, ¿no?.
El código que lo hace es éste:
function kalimero { salida="$?" ini="\[\033[" fin="\]" reset="0m" negro="0;30m" rojo="0;31m" verde="0;32m" marron="0;33m" azul="0;34m" purpura="0;35m" cyan="0;36m" grisclaro="0;37m" grisoscuro="1;30m" rojoclaro="1;31m" verdeclaro="1;32m" amarillo="1;33m" azulclaro="1;34m" purpuraclaro="1;35m" cyanclaro="1;36m" blanco="1;37m" zombies=`screen -ls | grep "tached" | wc -l` if [ "$zombies" -eq 0 ]; then zombies="" fi case $UID in # Patron de colores para Sophie 1000) # color=$azulclaro color=$cyanclaro ;; 1001) # color=$marron color=$amarillo ;; 0) # color=$rojo color=$rojoclaro ;; *) # $color=$grisclaro color=$blanco ;; esac inigris="\[\033[1;30m\]" fingris="\[\033[$color\]" if [ "$TERM" = screen ]; then screen="SCR$inigris,$fingris" else screen="" fi on="$ini$color$fin" scr="$ini$verdeclaro${fin}$screen$ini$color$fin" off="$ini$reset$fin" if [ "$salida" -eq 0 ]; then codigo="$ini$verdeclaro$fin$salida$ini$color$fin" else codigo="$ini$rojoclaro$fin$salida$ini$color$fin" fi PS1="$on$inigris[$fingris$scr$zombies$inigris:$fingris\j$inigris]$fingris $inigris[$fingris\u@\h $inigris($fingris\W$inigris)$fingris $inigris<$fingris$codigo$inigris>]-> $fingris$off" }
Este código hay que meterlo en un script bash (yo lo llamo /etc/funciones). Después ese script tienen que llamarlo todos los usuarios desde el fichero .bashrc de su home mediante "source /etc/funciones". El prompt se activará entonces con "PROMPT_COMMAND=kalimero" que puedes meterlo también en .bashrc.





