
QUÉ HICE
Hice una modificación al prompt del shell Bash, para que muestre la fecha y hora de tal manera que en vez de verse así:
siddharta@kubuntu:~$ se vea así:
[2009-06-18 11:22:16] siddharta@kubuntu:~$ CÓMO LO HICE
Se modifica la variable de entorno PS1, que es la que despliega el prompt. Primero se hacen pruebas modificando dicha variable directamente en el shell, y después se modifica un archivo de configuración para que el cambio sea permanente. Primero explicaré cómo se configuran las variables y posteriormente cómo se aplican los cambios
Para la fecha (Date) se usa la siguiente sintaxis (observar que la letra D es mayúscula):
\D{}y dentro de las llaves se deben acomodar -en el orden preferido- las variables para el día (%d), mes (%m) y año (%Y mayúscula para 4 dígitos, o %y minúscula para 2 dígitos), por ejemplo:
\D{%Y%m%d}hará que la fecha se muestre así: 20090618 (siempre he preferido ese orden, usando la misma lógica que en hh:mm:ss). Para que se separen los valores agregué guiones:
\D{%Y-%m-%d}y ahora se verá así: 2009-06-18
Para la hora (time) es más sencillo, ya que la sintaxis simplemente es:
\ty se mostrará así: 11:54:23 (en formato de 24 horas). Al unir ambas combinaciones, de fecha y hora, la cadena quedaría así:
\D{%Y-%m-%d} \tlo cual devolvería lo siguiente: 2009-06-18 12:15:07. Dejé un espacio en blanco antes de \t para que no quedaran pegados fecha y hora. Por último decidí agregar corchetes [ ] para visualizar fecha y hora dentro de un gran conjunto:
[\D{%Y-%m-%d} \t]haciendo que se muestre así: [2009-06-18 12:17:59]
Luego procedí a probar la configuración que me gustó. Primero obtuve el valor actual de la variable PS1:
set | grep PS1el resultado en mi equipo (Kubuntu 8.04) es el siguiente, y en esa línea se agregarán los parámetros de fecha y hora:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 'el usuario se muestra mediante los caracteres \u , por lo tanto pondré la fecha y hora antes del usuario. Copié la línea anterior y la pegué en el shell, anteponiendo el comando export para aplicar de inmediato la nueva configuración, también agregué en el lugar indicado las variables de fecha y hora que ya expliqué (dejando un espacio en blanco para que no quede la hora pegada al usuario), y al final presioné Enter:
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\][\D{%Y-%m-%d} \t] \u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 'y ahora el prompt se ve así:
[2009-06-18 12:12:00] siddharta@kubuntu:~$ ¡Me gusta! :) . Ahora es tiempo de hacer que el cambio sea permanente, y se verá cada vez que inice una sesión en la Terminal. Para ello modifiqué el archivo /home/siddharta/.bashrc (sin usar privilegios de root). Busqué la siguiente sección:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompty agregué la cadena [\D{%Y-%m-%d} \t] a la segunda línea, exactamente antes de \u que es el usuario, quedando así:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\][\D{%Y-%m-%d} \t] \u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_promptSe cierra el archivo guardando los cambios, y para que la nueva configuración se aplique de inmediato (si no se usó antes el comando export) se usa:
cd
. .bashrcó
cd
source .bashrcPosteriormente hice lo mismo para el prompt de root, modificando (como root) el archivo /root/.bashrc .
POR QUÉ LO HICE
Por varias razones:
- puedo ver a qué hora terminó la ejecución de un comando, porque observo a qué hora el prompt volvió a estar disponible
- puedo ver la fecha y hora del equipo cuando me conecto vía SSH, sin tener que estar usando el comando date
- puedo tener un reloj en el prompt, y simplemente presiono Enter si quiero actualizarlo
fuentes:
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/bash-prompt-escape-sequences.htm...
Sidd.











Muy buen aporte junto con el del color.
Gracias.
Llevas un par de entradas en tu blog de lo más útil.
Las pondré en practica este fin de semana si tengo algo de tiempo!!
Fijate que el tutorial anterior puse una cosa nueva que descubrí gracias a éste, sos un capo, che.