lunes, 12 de octubre de 2009

>

Perzonalizar el Prompt o Consola en Linux

En esta oportunidad en uno de mis ratos libres decidi porque no poner bonita mi consola enchulando el prompt al estilo de algunas distribuciones como gentoo o suse, asi que decidi hacer un pequeño tutorial de como perzonalizar el prompt de nuestra consola (bash) en gnu/linux.














Primero un repaso, qué es el prompt? pues no es mas que el conjunto de caracteres que vemos en nuestra consola, los simbolos y datos como el nombre de usuario y el nombre de nuestra maquina, etc. Como todo programa de codigo libre puede ser configurado y personalizado a nuestro gusto y éste no es la excepcion asi que empezemos. :D.

Antes que nada debemos saber que el estilo del prompt o conjunto de caracteres se define en una variable del sistema llamada "PS1" que se define en un archivo llamada ".bashrc", algunas distribuciones la definen en varias partes del archivo pero para no complicarnos y hacerlo fácil la definiremos en la parte final del .bashrc.
Abrimos el archivo .bashrc (no es necesario abrirlo como usuario pero si no nos permite lo abrimos como tal). Pero antes de modificarlo voy a explicar cómo se estructura el valor de la variable PS1.

Muestro de ejemplo mi archivo en Fedora 11, vemos que en la parte inferior declaramos la variable:



Los parámetros para mostrar el usuario, la máquina, el directorio en que nos encontramos, etc. son los siguientes.

\h: Hostname o nombre de la maquina
\T: la hora actual (formato 24 h)
\t: la hora actual
\d: la fecha
\W: El directorio actual en que nos encontramos
\w: El directorio actual en que nos encontramos con path completo


Estas las podemos colocar en cualquier parte, ah que me refiero con eso, pues si primero queremos que se muestra la hora actual y despues el usuario y la maquina o primero el usuario y la maquina, etc. etc. Ejemplo, solamente el usuario, despues el símbolo @ para separar, el nombre de maquina y de último el caracter # para separar de los comandos:

PS1='\u@\h#'

Reiniciamos la consola o una nueva pestaña y se vera de la siguiente manera:



Para el color se define de la siguiente manera:

\[\033[1;34m\]

En esta parte [1;34m\] se define el codigo de color, aqui estan algunos:

Black 0;30
Dark Gray 1;30
Blue 0;34
Light Blue 1;34
Green 0;32
Light Green 1;32
Cyan 0;36
Light Cyan 1;36
Red 0;31
Light Red 1;31
Purple 0;35
Light Purple 1;35
Brown 0;33
Yellow 1;33
Light Gray 0;37
White 1;37


Si quieres que el color no sea el caracter sino el fondo solo cambia el 3 por el 4, ej:
Fondo Amarillo 1;43

Si le aplicamos color a nuestro ejemplo anterior:

PS1='\[\033[1;34m\]\u\[\033[1;31m\]@\[\033[1;33m\]\h\[\033[1;31m\]#\[\033[1;37m\]'

Ojo con la ultima parte (en negrita) ya que va ser el color de los caracteres de los comandos. Nos quedaria de la siguiente manera despues de iniciar una nueva sesion:



Con esto ya tenemos modificado nuestro prompt y la consola se vera mucho mas agradable a la vista.
Aca dejo el que utilizo para mi usuario y para el root (modificar el .bashrc del root):

PS1='\[\033[1;31m\]$(date +%H:%M) \[\033[1;33m\]\u\[\033[1;34m\]@\[\033[1;33m\]\h\[\033[37m\][\w]\[\033[1;34m\]\$\[\033[37m\] '



Prompt de Root:

PS1='\[\033[1;33m\]$(date +%H:%M) \[\033[1;31m\]\u\[\033[1;34m\]@\[\033[1;31m\]\h\[\033[37m\][\w]\[\033[1;34m\]\$\[\033[37m\] '



Para las distribuciones Debian y derivados (ubuntu, kubuntu, etc.), se coloca al principio de la variable ${debian_chroot:+($debian_chroot)} ya que es parametro de la distribucion, quedando asi:

PS1='+($debian_chroot)}\[\033[1;33m\]$(date +%H:%M) \[\033[1;31m\]\u\[\033[1;34m\]@\[\033[1;31m\]\h\[\033[37m\][\w]\[\033[1;34m\]\$\[\033[37m\] '

Ahora puedes personalizar el tuyo agregando los parametros, colores y en el orden que desees.
Espero te haya servido y nos vemos a la proxima.

Referencias:
http://ubuntulife.wordpress.com/2008/10/25/cambiando-el-prompt-de-la-terminal/
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
http://www.pilas.net/20071216/colores-para-el-prompt/

No hay comentarios: