Resaltar el color del prompt en la terminal, para el usuario y para root

Enviado por siddharta el 17 Junio, 2009 - 17:17.

kterm.png

QUÉ HICE

El uso de la terminal es indispensable en un sistema UNIX. La terminal permite usar el shell del sistema operativo, y mediante comandos se dan instrucciones al mismo. Típicamente la terminal tiene un fondo negro y texto blanco. Kubuntu (y muchas otras distribuciones Linux) usan el shell Bash como predeterminado.

Al usar la terminal se visualiza una línea llamada prompt. El prompt es la línea del shell que indica de manera predeterminada: el usuario de la sesión, el nombre del equipo, el directorio actual, y permite diferenciar si el usuario es normal ($) o es root (#). Al final de la línea se muestra el cursor esperando la introducción de comandos. Este es un ejemplo del prompt:

siddharta@kubuntu:~$ _

Como todo el texto es blanco, después de un rato de usar la terminal, la línea del prompt se confunde con el resto del texto en la pantalla y a mí me gusta desplazarme hacia arriba repasando lo que he escrito y la salida de los comandos. Así que una de las primeras cosas que hago al instalar Kubuntu, es configurar el shell Bash para que el prompt siempre resalte, de tal manera que contraste de resto del texto en la terminal.

CÓMO LO HICE

Cada usuario del sistema tiene su propio archivo de configuración para el shell Bash, y en dicho archivo se guardan varias opciones y variables, entre ellas está la sección para resaltar el color del prompt.

El archivo es /home/nombre-del-usuario/.bashrc . Este archivo está oculto porque tiene un punto al inicio del nombre. Es necesario abrir dicho archivo de manera normal (es decir sin usar sudo, gksudo, kdesudo) y buscar la siguiente sección:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

A la última línea se le debe quitar el signo numeral (#) para que ya no sea omitida esa instrucción, debiendo quedar así:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

Posteriormente se guardan los cambios y cierra el archivo. Para que los cambios tengan efecto es necesario ejecutar lo siguiente en la terminal:

cd
. .bashrc

ó en su lugar:

cd
source .bashrc

De inmediato se observará que ahora el prompt se muestra de color verde, contrastando con el resto del texto de la terminal. Esta configuración aplicará tanto en terminales virtuales -por ejemplo Konsole en KDE, ó Terminal en GNOME- como para las Consolas (tty1, tty2, tty3, etc.), incluso desde una sesión vía SSH.

Si se desea usar otro color que no sea verde es necesario volver a abrir el archivo y buscar esta sección:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

En esa sección se indica qué se va a mostrar en el prompt y con qué colores. La segunda línea es la que se debe modificar, y a continuación resalto con negrita dónde está el código para el color:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Ese valor se puede cambiar por alguno de los mostrados en la siguiente lista:

Negro          0;30          Gris obscuro   1;30
Rojo           0;31          Rojo claro     1;31
Verde          0;32          Verde claro    1;32
Café           0;33          Amarillo       1;33
Azul           0;34          Azul claro     1;34
Púrpura        0;35          Púrpura claro  1;35
Cian           0;36          Cian claro     1;36
Gris claro     0;37          Blanco         1;37

De igual manera, tras hacer el cambio hay que guardar el archivo y volver a cargar la configuración como se explicó anteriormente.

En lo personal me gusta usar color verde sobre el fondo negro para mi propia sesión. Y prefiero usar el color rojo claro para cuando estoy trabajando como root.


Para modificar el prompt de root se debe abrir (como root) el archivo /root/.bashrc y buscar la siguiente sección:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    ;;
*)
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    ;;
esac

y escribir el signo numeral (#) al principio de cada línea, quedando así:

# set a fancy prompt (non-color, unless we know we "want" color)
#case "$TERM" in
#xterm-color)
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#    ;;
#*)
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#    ;;
#esac

Posteriormente se busca la siguiente sección:

# Comment in the above and uncomment this below for a color prompt
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

y se elimina el signo numeral (#) de la segunda línea, quedando así:

# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

en esa misma segunda línea se cambia el valor 1;32 (verde claro) por 1;31 (rojo claro), quedando así:

# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Se guardan los cambios y se cierra el archivo. La próxima vez que en la terminal se inicie sesión como root se observará que ahora el prompt para root se muestra en color rojo claro:

sudo su

Así es más fácil identificar, con la ayuda del color rojo, que se está usando la sesión de root, y por lo tanto todo debe hacerse con más cuidado.

POR QUÉ LO HICE

Uso mucho la terminal, y al principio me costaba mucho trabajo desplazar la pantalla hacia arriba (con la rueda del ratón) y encontrar con facilidad comandos recientemente introducidos. El comando history no me es de mucha utilidad en este caso, pues no necesito que se desplieguen cientos de comandos, sólo necesito ver unas cuántas líneas más arriba. Tampoco me es de utilidad pulsar CTRL+R (Reverse Seach) pues esta funcionalidad permite encontrar comandos para su ejecución y yo no deseo ejecutarlos. Ni me es de mucha utilidad pulsar la flecha hacia arriba porque no sólo necesito recordar el comando, sino ver todo lo que hice líneas atrás.

En términos generales, me gusta volver unas líneas hacia atrás y estudiar o repasar lo que he hecho, así que lo más útil para mí fue hacer que el prompt se mostrara en un color distinto al resto de la salida. Me facilita la lectura.

Recuerdo que hace años, cuando usé Red Hat 7 y Mandrake 9, podía iniciar sesión gráfica como root y el papel tapiz era de color rojo con muchos iconos de bombas explosivas, con el propósito de advertir al usuario sobre los riesgos posibles.

Espero esta información sea de utilidad para muchos.

Sidd.


EDITO:
Si primero se desea probar el color antes de modificar el archivo .bashrc, se teclea el siguiente comando directamente en el prompt, evaluando distintos códigos hasta que se obtenga el color preferido:

export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;38m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

y una vez que se ha elegido el color entonces se modifica el archivo .bashrc.

EDITO:
Corregí una ruta, que debe ser /root/.bashrc en vez de /home/root/.bashrc

Imagen de strange1712
Enviado por strange1712 el 17 Junio, 2009 - 18:06.

Muy útil e interesante!
Ya lo he realizado!
Lo único es que a mí no me agarra el color rojo oscuro (38m), me sale igual que el blanco (37m).
Luego, lo he puesto en 31m.

Muchas gracias, Siddharta!

Saludos.

Imagen de qwdar
Enviado por qwdar el 17 Junio, 2009 - 18:19.

muy bueno, muchas gracias wink

Imagen de Tuxerito
Enviado por Tuxerito el 17 Junio, 2009 - 18:20.

Como siempre muy interesante todas tus entradas.

Imagen de urazpian
Enviado por urazpian el 17 Junio, 2009 - 19:03.

Lo tuve en la cabeza hace tiempo, pero no busque como hacerlo.

Muy bien, gracias.

Imagen de Dinofire
Enviado por Dinofire el 17 Junio, 2009 - 21:28.

Muy bueno y muy util, gracias por el aporte =)

Imagen de siddharta
Enviado por siddharta el 17 Junio, 2009 - 23:28.


strange1712 escribió:

[...] Lo único es que a mí no me agarra el color rojo oscuro (38m), me sale igual que el blanco (37m).
Luego, lo he puesto en 31m [...]

Gracias por avisar, he buscado en Internet la lista completa de colores (porque honestamente no la sabía toda) y he actualizado la lista. También he agregado una nota que indica cómo probar cada color directamente en el prompt antes de modificar el archivo .bashrc , por favor busca donde escribí EDITO.

¡Gracias a todos por la retroalimentación!

Sidd.

Imagen de kaendesmut
Enviado por kaendesmut el 18 Junio, 2009 - 01:14.

Vale, me sirvió bastante.

Imagen de strange1712
Enviado por strange1712 el 18 Junio, 2009 - 02:38.

Muy bien, Siddharta!
Eso de poder probar los colores antes está muy útil, yo me puse a editar el archivo, salir y entrar de nuevo varias veces para probar varios colores, jeje...
Saludos, paisano!

Imagen de Astran
Enviado por Astran el 18 Junio, 2009 - 08:29.

Buen tutorial.
Yo siempre he sido de los que si no tienen la consola coloreada para darle vidilla no trabajo agusto!!

Imagen de jam1138
Enviado por jam1138 el 19 Junio, 2009 - 19:50.

Gracias por el dato :-), como anillo al dedo, justo estaba por buscar cómo hacerlo clap