Cambiar el indicador de bash (bash prompt)

Una de las cosas que me desesperan cuando escribo en la consola de Linux es que a veces cuesta bastante diferenciar lo que he escrito yo de lo que me ha respondido el sistema.

Para solventar este problema, podemos modificar la variable del usuario llamada $PS1. Esta variable almacena el formato que guarda el bash prompt, que viene a ser lo que aparece cuando Linux quiere que le escribamos algo en la consola. Normalmente en Debian sale así por defecto, todo en blanco:

usuario@sistema:/ruta/en/la/que/estas$

 Si por curiosidad queremos ver cómo le hemos dicho a Linux que nos muestre eso, no hay más que escribir:

$ echo $PS1

Esto nos devolverá algo parecido a lo siguiente:

${debian_chroot:+($debian_chroot)}\u@\h:\w\$

Normalmente Debian y derivadas nos ponen automáticamente un archivo en nuestro $HOME que establece estas cosas al iniciar sesión. Lo hallamos en ~/.bashrc.
Una forma fácil de colorear el prompt es editar dicho archivo y descomentar (quitar el # que lleva delante) la línea que pone force_color_prompt=yes. Para editarlo usaremos:

$ nano ~/.bashrc

Abre una nueva terminal y verás el cambio. ¿A que mejora? Pero aún puede mejorar más…
Intentemos entender cómo va esto. Nos olvidamos por un momento de la parte del principio (${debian_chroot:+($debian_chroot)}), que representa el chroot, pero eso son otras historias. Lo dejamos ahí, que no molesta.

El resto son variables que queremos que nos muestre, por ejemplo:

  • \u es el nombre del usuario.
  • \h es el nombre de la máquina.
  • \w es la ruta completa en la que estamos trabajando
  • \$ nos pone un $ si somos un usuario normal, y un # si somos root (ahora entenderás por qué lo pongo siempre delante cuando pongo código en el blog).

Pero estas no son las únicas disponibles, hay muchas otras muy prácticas:

  • \t – Hora.
  • \d – Fecha.
  • \n – Nueva línea.
  • \s – Nombre del shell.
  • \W – Nombre de la carpeta en la que estamos trabajando (sin la ruta completa)
  • \# – Número de comando introducido
  • \! – Número de historia del comando introducido

Además de esto podemos poner colores, negrita, subrayado, color de fondo, etc., tan sólo con poner indicadores de formato teniendo en cuenta que todo el texto que siga al indicador de formato cambiará a ese formato hasta que se encuentre el siguiente indicador.
Los indicadores de formato empiezan por \e[ y terminan por m, y normalmente se envuelven en corchetes ([]) para indicar que son caracteres que no deben mostrarse.
En la wiki de Arch Linux he encontrado una lista bastante exhaustiva de colores y modificaciones, a parte de una explicación mucho más detallada de todo lo que os estoy poniendo aquí, pero todo en inglés, como siempre.
Con toda esta información ya podemos hacer todas las pruebas que queramos y ponernos el prompt que nos apetezca. El mío ahora mismo es así:

\[\e]0;\u@\h: \w\a\]\n\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\e[1;33m\]\t \[\e[1;32m\]\u\[\e[0;33m\]@\[\e[0;32m\]\h\[\e[00m\] \[\e[01;34m\]\w\n\[\e[1;33m\]\$ \[\e[00m\]

Para probarlo no tienes más que escribir:

$ PS1='\[\e]0;\u@\h: \w\a\]\n\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\e[1;33m\]\t \[\e[1;32m\]\u\[\e[0;33m\]@\[\e[0;32m\]\h\[\e[00m\] \[\e[01;34m\]\w\n\[\e[1;33m\]\$ \[\e[00m\]'

Además aquí tenemos un tutorial exhaustivo de cómo manejar el bash prompt en inglés.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s