Bash prompting

Al diagnosticar un problema intermitente, tener la hora exacta en la que una prueba arrojó un determinado resultado puede ser muy útil al momento de tratarlo con los proveedores o intercambiar información con otro técnico.

Por medio de cambiar el prompt PS1 de Bash he resuelto el problema de saber a qué hora ejecuté un comando.

Mi prompt anterior era el default de Ubuntu:

PS1='${debian_chroot:+($debian_chroot)}u@h:w$ '

Para efectos de simplificar, eliminaré la parte ${debian_chroot:+($debian_chroot)}. Bastará indicar que muestra la variable de entorno debian_chroot entre paréntesis cuando ésta tenga un valor asignado. Desconozco más.

Digamos entonces que mi prompt anterior era:

PS1='u@h:w$ '
Versión por default.

Versión por default.

Y planteé como objetivos:

  • Que me permitiera encontrar fácilmente la separación entre comandos ejecutados.
  • Que me permitiera separar visual y fácilmente los componentes del prompt.
  • Que me permitiera determinar cuándo exactamente ejecuté un comando (útil durante mantenimientos de emergencia).
  • Que a pesar de tanta información, no se me acabe el renglón para escribir mi comando.

Así que:

  • Incluí un n al principio del prompt para dejar una línea en blanco.
  • Incluí la fecha y hora con huso horario d t D{%z}. El huso horario es particularmente útil cuando hay que compartir un resultado con un tercero que pudiera estar en otro lugar.
  • Puse en verde el identificador de usuario y en azul el directorio actual
  • Inicié el comando en una línea nueva. Una ventaja de esto fue que para documentar, puedo simplemente copiar toda la línea y no se incluye toda la información irrelevante.

Quedó como sigue:

SET_GREEN=`echo -e '33[01;32m'`
SET_BLUE=`echo -e '33[01;34m'`
UNSET_COLOR=`echo -e '33[0m'`
PS1='n[d t D{%z} -- [$SET_GREEN]u@h[$UNSET_COLOR]:[$SET_BLUE]w[$UNSET_COLOR]]n$ '

En líneas posteriores en mi .bashrc, Debian y Ubuntu anteponen [e]0;u@h: wa] para que el título cambie al establecer el prompt. Esto se habilita si la terminal es compatible con los cambios de título.

El resultado final es:

Resultado final.

Resultado final.


Comentarios

Bash prompting — 4 comentarios

  1. Muy bueno, algo asi utilizaba, más cuando doy soporte remoto con screen para clientes, para tener la evidencia, para que luego no salgan con que a no se hizo y no se que…. jejeje, la neta la neta como rifan los prompt de dos lineas, hay que hacer unas funciones o alias de bash para tener algo así:

    $ set_bash_simple
    y tener el clasico shell,

    $ set_bash_multiline
    y el prompt de dos lineas sin fecha, para cuando uno trabaja y no quiere tener la fecha, cero presion 🙂

    y

    $ set bash_soportes

    Y pues ese como el que tu pones, esto les digo porque luego una vez se me olvido y deje el bash de dos lineas con un cliente y se andaban desmayando cuando lo vieron de dos lineas y con colores jejeejeje.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *