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í.

Prompt
El prompt de mi sistema funcionando normalmente.

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í:

Prompt screen
El prompt funcionando en una sesión screen.

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:

  1. function kalimero {
  2. salida="$?"
  3. ini="\[\033["
  4. fin="\]"
  5. reset="0m"
  6. negro="0;30m"
  7. rojo="0;31m"
  8. verde="0;32m"
  9. marron="0;33m"
  10. azul="0;34m"
  11. purpura="0;35m"
  12. cyan="0;36m"
  13. grisclaro="0;37m"
  14. grisoscuro="1;30m"
  15. rojoclaro="1;31m"
  16. verdeclaro="1;32m"
  17. amarillo="1;33m"
  18. azulclaro="1;34m"
  19. purpuraclaro="1;35m"
  20. cyanclaro="1;36m"
  21. blanco="1;37m"
  22.  
  23. zombies=`screen -ls | grep "tached" | wc -l`
  24. if [ "$zombies" -eq 0 ]; then
  25. zombies=""
  26. fi
  27.  
  28. case $UID in # Patron de colores para Sophie
  29. 1000)
  30. # color=$azulclaro
  31. color=$cyanclaro
  32. ;;
  33. 1001)
  34. # color=$marron
  35. color=$amarillo
  36. ;;
  37. 0)
  38. # color=$rojo
  39. color=$rojoclaro
  40. ;;
  41. *)
  42. # $color=$grisclaro
  43. color=$blanco
  44. ;;
  45. esac
  46.  
  47. inigris="\[\033[1;30m\]"
  48. fingris="\[\033[$color\]"
  49.  
  50. if [ "$TERM" = screen ]; then
  51. screen="SCR$inigris,$fingris"
  52. else
  53. screen=""
  54. fi
  55.  
  56. on="$ini$color$fin"
  57. scr="$ini$verdeclaro${fin}$screen$ini$color$fin"
  58. off="$ini$reset$fin"
  59.  
  60. if [ "$salida" -eq 0 ]; then
  61. codigo="$ini$verdeclaro$fin$salida$ini$color$fin"
  62. else
  63. codigo="$ini$rojoclaro$fin$salida$ini$color$fin"
  64. fi
  65.  
  66. 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"
  67. }

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.

Be Sociable, Share!

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.

2 comentarios »

 
  • avatar avatarSimón Potter dice:

    Sr. Cofiño.

    Le envío un afectuoso saludo desde Chihuahua,Chih., México.

    He tenido el gusto de leer y disfrutar sus artículos desde hace unos meses y me permito felicitarlo por la variedad de los temas que trata así como por la calidad de los mismos. Es un deleite encontrar blogs como el suyo y tener la oportunidad de leer temas que son de interés general para todos los que nos gusta el mundo de la computación y todo lo que ello implica, así como sacar provecho, aprender un poco y compartir los tips y trucos que permitan resolver problemas que son comunes a los usuarios de una PC.

    Veo que la borrachera de ser campeones del mundo en futbol lo ha dejado sin tiempo para volver a escribir temas de linux, pero se justifica la alegría. Espero que pronto vuelva el gusanillo y nos regale con temas nuevos de gran interés para los que somos fanáticos del mundillo del pingüino.

    Felicitaciones nuevamente y que sigan los éxitos con sus novelas de ciencia ficción.

    Saludos…

  • avatar avatarlacofi dice:

    Hombre, pues muchas gracias…

    Encantado de que a alguien le resulte útil todo esto. Un abrazo. :-)

 

Deja un comentario

Disculpa, debes iniciar sesión para escribir un comentario.