sábado, 4 de abril de 2009

Configurar prompt shell linux

Para poder configurar el prompt hay que saber primero que toda la informacion se guarda en la variable PS1 (hay que escribir en consola "echo $PS1")


En primer lugar hay que destacar dos aspectos a la hora de visualizar el prompt: qué vamos a visualizar y cómo lo haremos.

Dentro del prompt del sistema se puede mostrar gran cantidad de información: como el usuario activo, el nombre de host, el directorio actual, la fecha y hora, la versión de Bash y si el usuario actual es root o no. Todo ello está disponible en la siguiente tabla, extraída y traducida del Bash-Prompt HOWTO.

REDACTANDO
REDACTANDOREDACTANDO
REDACTANDO
REDACTANDO

\a carácter de campana ASCII (07)
\d la fecha en el formato "DíaDeLaSemana Mes DíaDelMes" (p.e., "Tue May 26")
\e carácter de escape ASCII (033)
\h el nombre de host a partir del primer '.'
\H el nombre de host
\j el número de trabajos de la shell
\l el número de la shell activa
\n nueva línea
\r retorno de carro
\s el nombre de la shell
\t la hora en formato 24-horas HH:MM:SS
\T la hora en formato 12-horas HH:MM:SS
\@ la hora en formato 12-horas am/pm
\u el usuario activo
\v la versión de bash (p.e., 2.00)
\V la release de bash, versión + patchlevel (p.e., 2.00.0)
\w la ruta completa del directorio de trabajo actual
\W el directorio de trabajo actual
\! el número en el historial de este comando
\# el número de comando
\$ si el UID es 0, visualiza #, si no lo es, visualiza $
\nnn el carácter correspondiente al número octal nnn
\\ contrabarrra
\[ comienza una secuencia de caracteres no imprimibles que puede usarse para ejecutar un comando en el prompt
\] finaliza una secuencia de caracteres no imprimibles

De esta manera si ejecutamos en una consola:

[kalma@FRIKITOWN]$ PS1="[\u@\h \W\]$ "
[kalma@FIKITOWN]$

obtendremos el prompt anterior.

Para ponerle colores solo hay que usar '\[033[bb;c;ccm\]', donde 'bb' será el color de fondo, y 'c;cc' el color del texto. Hay que destacar que una vez puesto lo anterior se mantiene durante todo el prompt así que hay que usar varias veces el '\[033'. Yo siempre pongo al final de toda la línea '\[\033[0;0m\]', que restaurará los colores originales.

Los colores del texto son los siguientes:


Negro 0;30 Gris Oscuro 1;30
Azul 0;34 Azul Claro 1;34
Verde 0;32 Verde Claro 1;32
Cyan 0;36 Cyan Claro 1;36
Rojo 0;31 Rojo Claro 1;31
Morado 0;35 Morado Claro 1;35
Marrón 0;33 Amarillo 1;33
Gris Claro 0;37 Blanco 1;37

Ahí va un ejemplo, que es lo que actualmente tengo en mi ordenador:

PS1="\[\033[1;37m\][\[\033[0;32m\]\u\[\033[1;37m\]@\[\033[1;34m\]\h\[\033[41;1;33m\]\W\[\033[0;1;37m\]]\$ \[\033[0;0m\]"

Pero todo esto no sirve de nada si se quiere mantener la próxima vez que hagamos un login. Para ello hay que poner la línea completa en ~/.bashrc o en ~/.bash_profile. La diferencia de ponerlo en uno y otro archivo radica en que bashrc carga cada vez que se hace login o se abre una teminal en X, como Konsole; bash_profile únicamente carga al hacer un login en la máquina, si durante la sesión modificamos PS1 los cambios se guardarán hasta que hagamos un logout.

Aunque parezca complicado os invito a que probéis combinaciones, un color que resalte puede ayudar en multitud de ocasiones a aclararnos las cosas.

No hay comentarios:

Publicar un comentario