Linux y programación
Noticias, dudas y soluciones de Linux y programación

El tiempo en Badajoz

Sugerencias:

Esta bitácora fue creada por linuxcpp el día 24-09-06. Se han publicado 101 historias y 131 comentarios.


Foto del creador
Nombre: linuxcpp
Descripción: José Ramón Rubio
Localidad: Caceres
E-mail

Llamame con Gizmo

¿Qué le parece la nueva distribución gnuLinex 2006?
Excelente
Muy buena
Buena
Normal
Mala
Pésima

Ver resultados
Ver comentarios

    <<  Agosto 2008  >>
    DomLunMarMieJueVieSab
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      

Powered by eXtreblog  Use OpenOffice.org Add to Technorati Favorites  Bitacoras.com


Free Software Top
gnuLinEx 2006: de SARGE A ETCH: Última actualización: 12/01/2008

Colores y formato del terminal
Autor: linuxcpp _ URL _ Tb () _ Categorias: LINUX- Utilidades

Colores y formato
del terminal:

jrrubio@Portatil:~$  


  Distingamos entre los colores que puede configurarse en un perfil de un terminal de gnome, de los colores de letras y formato que puede tener un terminal de gnome, o un terminal del sistema (CTRL+ALT+F1, CTRL+ALT+F2,...). Ej:
jrrubio@Portatil:~$

  Para cambiar los colores y el formato de un terminal vamos a modificar una variable de entorno denominada PS1. Para ver su contenido debemos ejecutar el comando echo $PS1. Si deseamos modificarlo podemos hacer PS1="NUEVO_VALOR" (Ej:PS1="--> "  -->   )

  Hacer la prueba es muy sencillo. Sin embargo, hacerlo de esta manera tiene una pega, y es que el cambio sólo durará mientras ese terminal siga abierto. 

  Una buena solución para hacer el cambio permanente es editar el fichero $HOME/.bashrc. Evidentemente tiene que quedar claro que un cambio en este fichero SÓLO afectará a las consolas (de gnome o sistema) para el usuario al que pertenezca $HOME. Si deseamos que el cambio tenga efecto para el usuario ROOT por ejemplo, debemos editar el fichero /root/.bashrc.

IMPORTANTE: En TODAS las secuencias de código que aparecen a lo largo del post, el carácter / debe ser sustituido por la barra invertida (combinación de teclas: AltGr + º). Parece ser que este editor no deja escribir dicho carácter.

  El contenido de este fichero va a depender mucho del sistema que esteis usando, pero es muy posible que encontreis una línea que comienza del estilo a PS1="XXX", por ejemplo en gnuLinEx aparece la línea:
PS1="/u@/h:/w/$ "

   Debemos saber que existen una serie de directivas que podemos usar para definir PS1, y que muestra información de algún dato concreto del sistema, así nos encontramos con:
  • /u  --> muestra el usuario actual.
  • /h  --> muestra el nombre de la máquina.
  • /w --> muestra el directorio actual.
  • /d  --> muestra la fecha actual.
  • /T  --> muestra la hora actual (HH:MM:SS)
  • /@ --> muestra la hora actual (HH:MM)
  • /l   --> muestra el tty actual.
  • /n  --> hace un salto de línea.
  Para definir los colores también tenemos una serie de directivas, aunque resultan bastante más complejas:
  • BLANCO:  /[/033[1;37m/]
  • NEGRO:  /[/033[0;30m/]
  • VERDE:  /[/033[0;32m/]
  • VERDE LUMINOSO:  /[/033[1;32m/]
  • AMARILLO:  /[/033[1;33m/]
  • ROJO:  /[/033[0;31m/]
  • ROJO LUMINOSO:  /[/033[1;31m/]
  • CYAN:  /[/033[0;36m/]
  • CYAN LUMINOSO:  /[/033[1;36m/]
  • AZUL:  /[/033[0;34m/]
  • AZUL LUMINOSO:  /[/033[1;34m/]
  • VIOLETA:  /[/033[0;35m/]
  • VIOLETA LUMINOSO:  /[/033[1;35m/]
  • GRIS:  /[/033[1;30m/]
  • GRIS LUMINOSO:  /[/033[0;37m/]
  • MARRÓN:  /[/033[0;33m/]
  Conociendo esta secuencias de códigos podemos darle un valor a la variable de entorno PS1 según nos guste. Por ejemplo:
PS1="/[/033[1;31m/]/u/[/033[1;33m/]@/[/033[1;34m/]/h/[/033[1;33m/]_/[/033[1;36m/]/@/[/033[1;33m/]$/[/033[0;32m/] "

  Teniendo algo parecido a:  jrrubio@Portatil_11:48 $
  (NOTA: Suponemos que el fondo del terminal es negro.
  Los comandos se verán de color verde).

  Volviendo a la opción de editar el fichero .bashrc, sería sólo cuestión de añadir o sustituir la línea PS1="XXX", siendo XXX la nueva configuración.

  En este fichero podemos hacerlo incluso algo más complejo, ya que es podemos crear fácilmente funciones. Una función de ejemplo podría ser para calcular la ocupación de los ficheros de un directorio:

function getsize {
    let TotalBytes=0
    for Bytes in $(ls -l | grep "^-" | awk "{ print $5 }")
    do
    let TotalBytes=$TotalBytes+$Bytes
    done

    # The if...fi"s give a more specific output in byte, kilobyte, megabyte,
    # and gigabyte

    if [ $TotalBytes -lt 1024 ]; then
        TotalSize=$(echo -e "scale=3 $TotalBytes quit" | bc)
        suffix="b"
    elif [ $TotalBytes -lt 1048576 ]; then
        TotalSize=$(echo -e "scale=3 $TotalBytes/1024 quit" | bc)
        suffix="kb"
    elif [ $TotalBytes -lt 1073741824 ]; then
        TotalSize=$(echo -e "scale=3 $TotalBytes/1048576 quit" | bc)
        suffix="Mb"
    else
        TotalSize=$(echo -e "scale=3 $TotalBytes/1073741824 quit" | bc)
        suffix="Gb"
    fi
    echo -n "${TotalSize}${suffix}"
}


  Esta función la definiremos justo al comienzo del fichero .bashrc, tras las primeras líneas que comienzan por el carácter "#". Más adelante, al definir en el fichero la variable de entorno PS1 podríamos poner algo como:
  PS1=" (Tamaño: /$(getsize)): " mostrando el tamaño que ocupan los ficheros del directorio actual.

IMPORTANTE: TODO CAMBIO REALIZADO EN EL FICHERO .bashrc NO TENDRÁ EFECTO HASTA QUE ABRAMOS UN NUEVO TERMINAL.


  Espero que este post os sirva al menos como guia orientativa.
  En este enlace podeis ver mi fichero .bashrc actual, donde el resultado final es el siguiente: (NOTA: Recordad que en este fichero es necesario también hacer la sustitución de / de los códigos especiales por su barra invertida.)



 
  Para cualquier duda o problema deja un comentario.



Comentarios (0)
MeneameMenéame Barrapunto Barrapunto Technorati Technorati Google Google Bookmarks Fresqui Fresqui Delicious del.icio.us
VOTACIÓN: Votos(Núm. votos: 7)


Escribe tu comentario


Usuario de eXtreblog (sí/no)

Nombre:

Contraseña:
?


Comentario:

Escribe el resultado de la suma:






"Linux y programación"
I would love to change the world, but they won't give me the source code