InicioLinuxColores en bash y .bashrc

Colores en bash y .bashrc

Linux7/30/2010


Hola, este post va para quienes usan la terminal seguido.
Sea que les guste tener varios colores en sus prompts o bien lo consideren una ventaja, como es en mi caso, para distinguir informacion rapidamente, vamos a ver como personalizar un poco el prompt en bash.



Primero lo primero, ¿por que?:

Como les comentaba, yo uso mucho la terminal para conectarme con otras computadoras por ssh. Realmente es muy incómodo el tener varias sesiones abiertas en cada pc y tener que leer el prompt para saber de cual se trata. Además cuando tiramos algun "comando --help" y la ayuda es tan larga que tenemos que volver con el scroll para atras, no siempre podemos apreciar donde quedo la línea de comando que reclamó la ayuda y nos pasamos como colectivo lleno.
Esos "problemitas" se me ocurrió solucionarlos coloreando el prompt, de modo que sea fácilmente distinguible cuando es una línea de comando y cuando es la salida del mismo lo que vemos en la terminal. También puse colores distintos a los nombres de las distintas computadoras así, por acostumbramiento, me doy cuenta cuando es que estoy en una consola de la mia; cuando el color es distinto será otra pc. La última mejora es cambiar el color de usuario root por un inconfundible "rojo peligro" así como tambien el caracter "#", solo como para saber cuando es una sesion de root sin mucho esfuerzo.


Veamos que necesitamos saber para esto:


Lo básico de bash esta en el archivo .bashrc en el home de cada usuario (incluido root)
Para cambiar el prompt tenemos que editar (o agregar) la línea que arranca con "PS1="

ahora, que es cada cosa de todo lo que vemos:

Las secuencias de escape:


\a ASCII bell character (07)
\d fecha como "dia mes fecha" ("mar May 26"
\D{format} fecha
\e ASCII escape character (033)
\h nombre del host hasta el primer punto
\H nombre del host
\j numero de trabajos manejados por el shell
\l the basename of the shell's terminal device name
\n nueva linea
\r Volver al principio
\s nombre del shell
\t hora en 24-horas con segundos (HH:MM:SS)
\T hora en 12-horas (AM/PM) con segundos
\@ hora en 12-horas (AM/PM)
\A hora en 24-horas (HH:MM)
\u usuario actual
\v version de bash
\V release de bash
\w directorio actual en version completa (con la ruta) con el home como ~
\W directorio actual en version corta (solo el nombre) con el home como ~
\! Numero de comando en el historial
\# Numero de comando
\$ Muestra # para root, $ para los usuarios
\nnn caracter correspondiente al octal nnn
\ \ barra invertida
\[ principio de secuencia de caracteres no imprimibles
\] final de secuencia de caracteres no imprimibles



OjO con las últimas 2, si no las tenemos en cuenta se nos pone loco el prompt a la hora de borrar o autocompletar!


Los colores son:


NEGRO 0;30
GRIS 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
VIOLETA 0;35
VIOLETA CLARO 1;35
MARRON 0;33
AMARILLO 1;33
GRIS CLARO 0;37
BLANCO 1;37


Que hacemos?

Primero vemos la lista de posibilidades en las secuencias de escape. Seleccionamos las que nos interesan, por ejemplo hay quien quiere ver la fecha en el prompt (cosa de gustos).
En mi caso, uso un formato archiconocido y empleado por muchos:
usuario@host ruta$

lo cual seria:
\u@\h \w\$


Ahora, para colorearlo, necesitamos entrar con una secuencia no imprimible los colores que queremos.
de modo que antes de cada elemento ponemos el color encerrado con \[ y \] eso es SUPER importante, si no lo hacemos, se nos descajeta todo cuando borramos o usamos autocompletar.
a cada color lo anotamos con un \e al principio y un \m al final.
entonces, cuando cambiamos el color a ROJO, ponemos
\[\e[0;31m\]'

OjO que todo lo que le siga va a estar en rojo, hasta tanto no le digamos que otro color usar
Para resetear el color al color por defecto de la consola usamos el valor 0;0

en mi caso uso el siguiente formato:
santodelaespada@micomputadora /home/santodelaespada/Descargas $

para mis usuarios, en realidad con fondo negro y letras blancas.
y:
root@micomputadora /root/Backup #

para root.

El primero se anota así:
PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\] \w\$ '

Para el root:
PS1='\[\e[0;31m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\] \w\[\e[0;31m\]\$\[\e[0m\] '


En las otras computadoras les cambio el color al host, por ejemplo, en ves de usar verde, uso rojo, cambio el 0;32 por 0;31
PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;31m\]\h\[\e[0m\] \w\$ '
santodelaespada@milaptop /home/santodelaespada/Descargas $


Noten el uso de \[\e[0m\] para resetear el color. Si no lo ponen al final, les queda el texto de la consola en el último color que pusieron en el prompt

Con eso puedo rápidamente ubicar el prompt y sin tener que leer el nombre de host, saber de cual se trata. También me evito renegar con "necesita privilegios de root" porque distingo muy facilmente cuando la sesion es de root y cuando no.

Otras mejoras con colores

Salida de ls coloreada:
Agregamos un alias al .bashrc
alias ls='ls --color=auto'

de modo que cuando hacemos ls, en realidad bash hace "ls --color=auto" y nos muestra todo con colores

Colorear la salida de grep
Es super útil para encontrar lo que nos filtra grep.
Añadimos las dós líneas como se ponen abajo:
export GREP_COLOR="1;33"
alias grep='grep --color=auto'


1;33 es amarillo, asi que lo que buscamos con grep aparece de ese color. Si quieren otro, lo buscan en la lista de arriba y listo.

Conclusión

Espero que les sirva, se que a mí me facilita y hace mucho más ameno el uso de la terminal. Los colores nos permiten encontrar información rápidamente entre un texto blanco con fondo negro. A la vez que nos dan información por el simple hecho de poder distinguir el color, por ejemplo: prompt rojo es para root (no tengo que ver si es $ o #, o si dice root en el nombre de usuario)

Salu2

fuentes:

https://bbs.archlinux.org/viewtopic.php?id=56825

La mayoria de las personalizaciones son de la wiki de Archlinux.
Datos archivados del Taringa! original
45puntos
5,686visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

s
Usuario
Puntos0
Posts37
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.