EL -LS- EN COLOR.

V. Inglesa: Thorbjoern Ravn Andersen ravn@imada.ou.dk
V. Española: Tomás Hidalgo, Guy Paul Gallardo thidalgo@alboran.ualm.es

v1.0, 15 de Noviembre 1996


El comando ls incluído en la distribución Slackware de linux permite un aspecto en color (Slackware 2.0.2 y núcleo 1.1.54 de Linux. Funciona también con agetty, o bien con mgetty_ps). Puede que los colores por defecto no le gusten o que les haya cogido manía. Este documento tiene como objetivo explicar el principio de funcionamiento y configuración de colores usados por este comando.

1. ¿Cómo seleccionar los colores?

Existen dos métodos:

2. ¿Cuáles son las combinaciones de colores posibles?

Este es un script en C-shell que muestra en la consola el conjunto de combinaciones de colores:



 #!/bin/csh
 #
 # Muestra los colores ANSI
 #
 set esc="\033["
 foreach fore (30 31 32 33 34 35 36 37)
 set line1="\*(dRfore " line2="  "
 foreach back (40 41 42 43 44 45 46 47)
 set line1="\*(dR{line1}\*(dR{esc}\*(dR{back};\*(dR{fore}m Normal \*(dR{esc}0m"
 set line2="\*(dR{line2}\*(dR{esc}\*(dR{back};\*(dR{fore}1m \*(dR{back} Bold \*(dR{esc}0m"
 end
 echo "\*(dRline1\n\*(dRline2"
 end


El número de colores foreground crece hacia la izquierda, y el número de colores background sigue la misma norma. Si desea una intensidad alta coloque 01 como primer parámetro. Ponga un punto y coma entre cada parámetro y toda la secuencia de parámetros seguida.

2.1 Inciso del traductor español.

Para una mayor facilidad a la hora de poder elegir el aspecto de colores para el comando ls se describen a continuación la correspondencia entre los números y los colores de las secuencias de escape.

Funciones Gráficas

Colores Primer Plano (Foreground)            Colores de Fondo (Background)

         30.....................Negro....................40
         31.....................Rojo.....................41
         32.....................Verde....................42
         33.....................Amarillo.................43
         34.....................Azul.....................44
         35.....................Magenta..................45
         36.....................Azul verdoso.............46
         37.....................Blanco...................47

3. Aspecto por tipos de ficheros.

El comando ls comienza por mirar la definición de asociaciones de color en el fichero ~/.dir_colors y si no existe usa el fichero /etc/DIR_COLORS. Dichos ficheros contienen entradas del tipo:


       LINK 36;1      # enlace simbolico
       FIFO 40;33     # pipeline
       SOCK 41;01;35  # socket
       BLK 41;33;01   # gestor en modo bloque
       CHR 41;33;01   # gestor en modo caracter

       EXEC 32;1      # ficheros ejecutables

       .tar 01;31     # ficheros y archivos comprimidos
       .tgz 01;31
       .zip 01;31
       .z   01;31
       .Z   01;31
       .gz  01;31

Las secuencias de escape dadas en parámetros aquí poseen exactamente la misma sintaxis que para el comando setterm. Modifique esto a su gusto y verá el resultado ejecutando un ls en /sbin, /etc o /etc/dev.

Con el fin de que el fichero /etc/DIR_COLORS o ~/.dir_colors sea tomado en cuenta es necesario añadir en /etc/profile o ~/.profile (sh/bash) o /etc/csh.login o ~/.login (csh/tcsh) la línea:

eval '/bin/dircolors'

ATENCIÓN: Esta línea debe ser colocada antes de cualquier definición de alias para el comando ls. Este comando lee el fichero /etc/DIR_COLORS o ~/.dir_colors y une las variables de entorno LS_COLORS y LS_OPTIONS así como los alias ls, dir, vdir, d y v.

4. Cómo dar una configuración por defecto.

Esto es realizado individualmente para cada consola virtual con la ayuda de la secuencia ANSI. (Esta información ha sido encontrada estudiando el código fuente del núcleo. No puedo decir que se trate de un estándar.)

ESC [8]

que especifica los valores por defecto de colores foreground y background. La secuencia ANSI de recomposición de atributos, ESC[m, permite entonces tener en cuenta esos colores antes que el blanco sobre fondo negro.

El método descrito aquí se ha supuesto para sistemas aislados, donde los accesos se hacen sólo en la consola. Esto no funciona para logins realizados desde terminales remotos, conexiones por módem o desde otras máquinas, ya que no interpretarían las secuencias. La interpretación de códigos ANSI es una propiedad de las consolas Linux y que sólo existe en pocos programas de terminal.

Si se encuentra en un sistema aislado, un buen medio de tener en cuenta los colores para cada consola es la de modificar el fichero /etc/issue, y ver el resultado generado. Generalmente (y en particular en las distribuciones Slackware) este fichero es leído y mostrado en cada inicialización del sistema. Así si su /etc/rc.d/rc.S contiene (alrededor de la línea 75):

    # Inicializa /etc/issue y etc/motd para dar la version del nucleo usado
    # ATENCION: los ficheros /etc/issue y /etc/motd son creados en cada inicio
    # Ponga esto en comentario si desea personalizar para siempre todos
    # estos ficheros.
    echo "">/etc/issue
    echo Bienvenido al mundo maravilloso de Linux \
         '/bin/uname -a | /bin/cut -d\ -f3'.>>/etc/issue
    echo >> /etc/issue

Coloque estas líneas en comentario o modifíquelas como sigue:

    # Ponga esto en comentario si desea personalizar para siempre todos
    # estos ficheros.
    ESCAPE="<sustituir esto por un solo caracter de escape>"
    echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J">/etc/issue

Mi shell de arranque no entiende el \033, debo especificar el código ASCII 27 en mi script como indiqué en el primer párrafo. La línea posee el aspecto:

ESCAPE="^[".

Este código tiene por objeto colocar el cursor al principio de la ventana, cambiar los colores, salvar la selección y borrar la pantalla. Dicha modificación solo tendrá efecto al reinicializar la máquina.

Si su máquina Linux no está aislada, puede que aparezcan diversos problemas en las conexiones con usuarios remotos. Esto es debido al hecho de que su terminal no interpreta las secuencias de escape ANSI.

Debe entonces ajustar a nivel de usuario:

 if ["\*(dRTERM"="console"]; then
   echo "\033[37;44m\033[8]"
 fi

o bien,

 if ("\*(dRTERM"=="console") then
   echo "\033[37;44m\033[8]"
 endif

Si se desea que la modificación afecte a todos los usuarios del sistema, basta tan sólo con que el root modifique los ficheros /etc/profile o /etc/csh.login. (Reitero una vez más que si el shell no puede interpretar los \0xx, en particular el código \033, basta con sustituir este ultimo por "ESC".

5. Copyright

Esta versión bajo copyright (c)1995 es propiedad de Pierre Vassellerie.

Como todo documento HOWTO

N del T: COMOs
, este documento puede ser reproducido y distribuido en su integridad o en parte, por cualquier medio físico. A pesar de todo queda sujeto a las condiciones siguientes:

Pueden ser acordadas excepciones a estas reglas con fines educativos; escriba al autor y pregunte. Estas restricciones tiene como único objetivo proteger a los autores y su trabajo. Toda aportación educativa a este documento será valorada positivamente.

6. La traducción.

Este documento ha sido traducido por Tomás Hidalgo Salvador para el grupo de usuarios de Linux INSFLUG coordinado por Francisco José Montilla.

Dicha traducción se encuentra amparada por los mismos derechos expresados en la sección copyright .

Tomás Hidalgo Salvador, thidalgo@alboran.ualm.es

7. Anexo: Grupos LiNUXeros en España.

Francisco José Montilla, pacopepe@nova.es, FidoNet 2:345/402.22 es coordinador del INSFLUG: (Impatient & Novatous Spanish Fidonet LiNUX Users Group) uno de los varios grupos de usuarios existentes en España, y más concretamente en la mejor ;-) área de FidoNet: R34.LINUX junto con LuCas (LinUx en CAStellano).

El INSFLUG se orienta preferentemente a la traducción de documentos breves, como los Howtos y PUFs

Preguntas de Uso Frecuente, las FAQs. :)
, etc.

LuCas Coordina y realiza las traducciones de las guides, es decir, documentos más extensos.

Por supuesto, la orientación de cada grupo no tiene carácter excluyente; si quieres colaborar en las dos, ¡mejor! ;-).

Actualmente están siendo traducidos varios COMOs y FAQs, además de las ``guides''.

Otra fuente de información obligada para el recién incorporado son las FAQ elaboradas a partir del correo circulante por R34.LINUX por Pablo Gómez, pgomez@laereas.aiva.com, 2:341/43.40, disponibles próximamente en los formatos habituales de documentación (ps, dvi, html, sgml, etc) en los servidores de Internet especificados más adelante, así como en el mismo área.

¡Necesitamos tu colaboración para futuras traducciones! si quieres unirte a nosotros ponte en contacto con:

INSFLUG:

Francisco José Montilla, pacopepe@nova.es, FidoNet 2:345/402.22

LuCas:

  1. Juan José Amor, jjamor@infor.es, FidoNet 2:341/12.19
  2. Alfonso Belloso, alfon@bipv02.bi.ehu.es, FidoNet 2:344/17.2

Puedes obtener traducciones de:

FidoNet:

Si se da el caso de que carezcas de acceso a Internet, y no encuentras los COMOs en alguna de estas dos direcciones, no dudes en ponerte en contacto conmigo, y me encargaré de subirlas a alguna de las dos.

Por último, recordarte que un inmejorable lugar para estar informado, así como consultar y discutir todo lo relacionado con LiNUX lo tienes en FidoNet, en R34.LINUX.

Actualmente, ambos grupos poseen las siguientes listas de correo:

Ambas son listas tipo majordomo; para suscribirte, por ejemplo a la del INSFLUG, envía un email a majordomo@nova.es, con "subscribe insflug" en el cuerpo del mensaje.

Dispones de todos los ``COMOs'' traducidos hasta ahora, así como información puntual sobre el INSFLUG y temas relacionados en:

http://www.insflug.nova.es en sus versiones html, y listas para bajar, en http://ftp.insflug.nova.es

Otro buen punto de búsqueda, consulta, y obtención de la documentación traducida, en formato HTML, con links a los demás formatos, así como las traducciones de las guías traducidas por LuCAS es:

http://www.infor.es/LuCAS/

junto con su ftp:

ftp://ftp.infor.es/pub/LuCAS/

Tanto el INSFLUG, como LuCAS, y todos los traductores implicados, esperamos que esta traducción te haya sido de utilidad.