Hacer útil el prompt de bash
Antes que nada, una definición de prompt:
Se llama prompt al carácter o conjunto de caracteres que se muestran en una línea de comandos para indicar que está a la espera de órdenes. Éste puede variar dependiendo del intérprete de comandos y suele ser configurable (extraído de la Wikipedia).
Normalmente no lo vemos como algo muy importante, pero leyendo este artículo en Make Tech Easier he reflexionado un poco acerca de este aspecto, y he hecho un listado de los prompts que me parecieron más útiles:
1. Cambiar el color del prompt dependiendo del resultado del comando ejecutado
Este es de los que más me ha gustado: si ejecutas bien un comando, el prompt queda en su color original (en este caso verde); pero si te equivocas al tipearlo entonces queda en rojo. Además tiene una característica bastante interesante: te muestra el número dentro del historial que será asignado al comando que ejecutes. El resultado es el siguiente:

Para usarlo, ejecutas esto o lo pones en tu archivo ~/.bashrc para hacerlo permanente:
PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[1\\\;32m\\]"; else echo "\\[\\033[1\\\;31m\\]"; fi\`[\u:\`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'
2. Mostrar una carita feliz si se ejecuta un comando correctamente
Este puede sonar algo infantil pero me parece bastante interesante. Funciona igual que el de arriba y el resultado es el siguiente:

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\` \[\033[01;32m\]\u:\[\033[01;34m\]\w \$\[\033[00m\] "
3. Mostrar bastante información en el prompt
El siguiente prompt es bastante grande y se encuentra distribuido en 3 líneas. Muestra la fecha y hora actual, el usuario, el nombre del equipo, la terminal con la que se está trabajando, el directorio en donde estamos, la cantidad de archivos en el directorio y el espacio que ocupan. Se ve así:

PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] $ \[\033[0m\]"
4. Mostrar la cantidad de procesos corriendo en background
Este es otro bastante interesante ya que te muestra aparte de lo normal: el número en el historial del comando a ejecutar, y la cantidad de procesos que se encuentren corriendo en background (aquellos ejecutados de la forma comando &). Se ve así:

PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '
5. Mostrar información de los archivos y procesos en background
Esta combina cosas de la 3 y la 4: muestra cantidad de archivos y espacio que ocupan, además de la cantidad de procesos corriendo en background. El resultado es este:

PS1="\n\[\e[30;1m\]\[\016\]\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]\[\017\](\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"
¿se te ocurre algún otro?
Actualización: he creado un ZIP con los prompts dentro ya que hay usuarios que, por culpa del navegador, no pueden verlos completos (cosas del resaltador de sintaxis):
17 Comentarios | deja el tuyo




Una entrada de lo más interesante
Realmente interesante, muchas gracias por tus aportes tan útiles
Muy buena entrada, que vaina tan bacana, me gustaron mucho las primeras dos.
Este artículo ha sido Geekeado http://geekealo.com.ar/story.php?id=371
Me alegra que les haya gustado… lo mejor es probar combinaciones de estilos y colores.
Para lo de los colores, les recomiendo esta entrada:
http://casidiablo.net/colorear-salida-consola/
Un saludo!
Yo cuando hago un clear, además del clear escribo por pantalla la hora y la fecha del día.
Y con el script del corre que pusiste el otro día, haré que me promtee los mail, si es que los recibo.
Muy buena entrada
Saludos
Buenisimo post (Y) te felicito!!…. salu2.-
He puesto un ZIP con los prompts, para aquellos que no los pueden ver por culpa del navegador.
un saludo!
Linux, Java y Programación http://bit.ly/2jd7JT linux java programacion blog ubuntu tutoriales tips
Simpático tip. Muy interesante!
esta muy bien
Muy interesante. Sabía que se podían personalizar pero… que originales son algunos!
Creo que pondré alguno en mi equipo