Cambiar el indicador de bash (bash prompt)

Categorías: GNU/Linux

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:

[email protected]:/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)}\[email protected]\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;\[email protected]\h: \w\a\]\n\[\e]0;\[email protected]\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;\[email protected]\h: \w\a\]\n\[\e]0;\[email protected]\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.

Ver también

Comentarios

comments powered by Disqus