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.