miércoles, 13 de noviembre de 2013

Cambiar colores en el "prompt"

Una de las primeras cosas que me gusta configurar en Linux es el aspecto del terminal (línea de comandos, consola, etc).

Yo esto lo hago porque tengo tres ordenadores entre el del trabajo y los personales y tener en cada uno el prompt con diferentes colores me ayuda a distinguir rápidamente cuál estoy usando en cada momento (especialmente cuando trabajo de forma remota).



En la wiki de ArchLinux hay una entrada muy completa en la que se explican las diferentes posibilidades; en concreto a mí me gusta la versión en inglés, que es la que he enlazado.

Además del color, también se puede elegir cómo queremos que se muestre la información en el prompt. Yo no siempre uso la que viene por defecto, sino que me gusta que tenga el siguiente formato:

[usuario@nombre_equipo directorio_actual]$

En concreto, yo en el directorio actual muestro sólo la última carpeta en la que estoy, no la ruta completa, como se puede ver en la imagen anterior.

Todo esto se puede configurar editando el fichero .bashrc que tenemos en la carpeta pesonal (/home/usuario). Podemos usar cualquier editor de texto, ya sea por línea de comandos, como vim o nano, o gráfico como kate, gedit, geany, etc.

En ArchLinux sólo hay que editar una línea. Yo lo que hago es comentar* la que viene por defecto y escribir otra en la que hago los cambios.

#PS1='[\u@\h \W]\$ '
PS1='\[\033[1;36m\][\u@\h \W]\$\[\033[0m\] '

En este caso, sólo añado un color al principio y vuelvo al color por defecto al final para que lo que se escriba después del prompt ya salga normal. El color que yo he puesto en este caso es un cyan intenso, donde intenso significa que saldrá en negrita. En el artículo de la wiki de Arch tenéis la lista de colores posibles.

Como veis, \u es el usuario, \h, el nombre del host (equipo) y \W el directorio actual sin poner la ruta completa (para poner toda la ruta sería \w).

En Ubuntu en realidad es hacer lo mismo, pero el .bashrc por defecto viene más completo, con una estructura condicional en la que podemos elegir si queremos un prompt coloreado o el por defecto.

- Por un lado, queremos que tome el prompt coloreado, para lo que hay que descomentar la línea:
#force_color_prompt=yes

- Por otro, editamos el prompt coloreado a nuestro gusto. Yo además del color, como he comentado, también cambio la manera de visualizar las cosas. El modo original sería:
usuario@nombre_equipo:ruta_completa_directorio_actual$

Y yo le añado los [] al principio y al final, cambio : por un espacio y no pongo la ruta completa.

Todo esto os lo muestro en las siguientes  líneas:

if [ "$color_prompt" = yes ]; then
    PS1='\[\033[1m\]\[\033[35m\][${debian_chroot:+($debian_chroot)}\u@\h \W]$ \[\033[0m\] '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

 

En este caso, he puesto por separado el color y la intensidad, simplemente para que veáis las dos formas posibles. Es equivalente a ponerlo como en el ejemplo de Arch, \[\033[1;35m\].



*Para los no familiarizados con la programación, los comentarios son porciones de código que no se ejecutan. Ahí podemos poner lo que queramos, así que se suele utilizar para explicar lo que hace una porción de código o para "reservar" código que ahora no se usa pero que puede querer usarse en un futuro - esto último no es una práctica muy deseable, pero se utiliza ;)
En concreto en bash, los comentarios empiezan por #, así que cualquier línea que lo tenga al principio es como si no estuviera.

No hay comentarios: