Provided by: manpages-es-extra_0.8a-16_all bug

NOMBRE

       magic - fichero de números mágicos para la orden file

DESCRIPCIÓN

       Esta  página  del  Manual  documenta  el formato del fichero mágico que
       emplea la orden file(1), versión 3.26. La orden file identifica el tipo
       de  un  fichero  utilizando,  entre  otras  pruebas, una que mira si el
       fichero  empieza   con   un   cierto   nmero   mgico.    El   fichero
       /usr/share/misc/magic  especifica  qué  números mágicos hay que buscar,
       qué mensaje mostrar si se encuentra un número mágico en  particular,  e
       información adicional que haya que extraer del fichero.

       Cada  línea  del  fichero especifica una prueba a realizar.  Una prueba
       compara los datos que  comiencen  en  una  posición  particular  en  el
       fichero  con  un  valor  numérico  de  1,  2  ó 4 bytes o una cadena de
       caracteres. Si la prueba tiene éxito, se muestra un mensaje.  La  línea
       consiste en los campos siguientes:

       desplazamiento
                Un número que especifica el desplazamiento, en bytes, desde el
                principio del fichero de datos que se esté comprobando.

       tipo     El tipo de los datos a comprobar. Los valores posibles son:

                byte     Un valor de un byte.

                short    Un valor de dos bytes (en la mayoría de los sistemas)
                         en el orden de bytes nativo de la máquina.

                long     Un  valor  de  cuatro  bytes  (en  la  mayoría de los
                         sistemas) en el orden de bytes nativo de la  máquina.

                string   Una cadena de bytes.

                date     Un  valor de cuatro bytes interpretado como una fecha
                         de Unix.

                beshort  Un valor de dos bytes (en la mayoría de los sistemas)
                         en orden de bytes ascendiente hacia la derecha.

                belong   Un  valor  de  cuatro  bytes  (en  la  mayoría de los
                         sistemas) en  orden  de  bytes  ascendente  hacia  la
                         derecha.

                bedate   Un  valor  de  cuatro  bytes  (en  la  mayoría de los
                         sistemas) en  orden  de  bytes  ascendente  hacia  la
                         derecha, interpretado como una fecha de Unix.

                leshort  Un valor de dos bytes (en la mayoría de los sistemas)
                         en orden de bytes ascendente hacia la izquierda.

                lelong   Un valor de  cuatro  bytes  (en  la  mayoría  de  los
                         sistemas)  en  orden  de  bytes  ascendente  hacia la
                         izquierda.

                ledate   Un valor de  cuatro  bytes  (en  la  mayoría  de  los
                         sistemas)  en  orden  de  bytes  ascendente  hacia la
                         izquierda, interpretado como una fecha de Unix.

       Los tipos numéricos pueden opcionalmente ir seguidos por & y  un  valor
       numérico, para especificar la operación de bits Y con dicho valor antes
       de que se realice la comparación. Preceder el tipo de una u indica  que
       las comparaciones ordenadas deben hacerse sobre valores sin signo.

       test   El valor a ser comparado con el valor del fichero. Si el tipo es
              numérico, este valor se especifica como en el lenguaje C; si  es
              una  cadena,  como  una cadena de caracteres de C, permitiéndose
              las secuencias de escape  habituales  (como  \n  para  la  nueva
              línea).

              Los  valores  numéricos  pueden hacerse preceder por un carácter
              que indique  la  operación  a  realizarse.  Puede  ser  =,  para
              especificar   que   el   valor   del  fichero  debe  igualar  al
              especificado, <, para especificar que el valor del fichero  debe
              ser  menor que el valor especificado, >, para especificar que el
              valor del fichero debe ser mayor que el valor  especificado,  &,
              para  especificar  que el valor del fichero debe tener a 1 todos
              los bits que estén  a  1  en  el  valor  especificado,  ^,  para
              especificar  que  el valor del fichero debe tener a 0 cualquiera
              de los bits que estén a 1 en el valor especificado,  o  x,  para
              especificar  que  cualquier  valor concordará. Si el carácter se
              omite, se asume que es =.

              Los valores numéricos se especifican como en C; por ejemplo,  13
              es en base diez, 013 es octal, y 0x13 es hexadecimal.

              Para  valores  de  cadena,  la  cadena de bytes del fichero debe
              concordar con la cadena de bytes especificada.   Los  operadores
              =,  <  y  > (pero no &) pueden aplicarse a cadenas.  La longitud
              empleada para la concordancia es la del argumento cadena  en  el
              fichero mágico. Esto significa que una línea puede concordar con
              cualquier  cadena,  y  por  tanto   presumiblemente   mostrarla,
              haciendo >\0 (porque todas las cadenas son mayores que la cadena
              nula).

       mensaje
              EL mensaje a mostrarse si la  comparación  tiene  éxito.  Si  la
              cadena  contiene  una  especificación  de  formato  como  las de
              printf(3S), el valor del fichero (con cualquier  enmascaramiento
              especificado  ya realizado) se muestra empleando el mensaje como
              la cadena de formato.

       Algunos formatos de fichero  contienen  información  adicional  que  se
       mostrará  junto  con el tipo del fichero. Una línea que comience con el
       carácter > indica pruebas y mensajes a mostrarse adicionales. El número
       de  >  en la línea indica el nivel de la prueba; una línea sin ningún >
       al principio se considera que está en el nivel 0.   Cada  línea  en  el
       nivel  n+1  está  bajo el control de la línea en el nivel n más cercano
       que la preceda en el fichero mágico.  Si la prueba en una línea  en  el
       nivel n tiene éxito, se realizan las pruebas especificadas en todas las
       líneas subsiguientes en el nivel n+1 y se muestran los mensajes si  las
       pruebas  tienen  éxito.  La  línea  siguiente en el nivel n termina con
       esto.  Si el primer carácter que siga al último > es un (  entonces  la
       cadena   tras  el  paréntesis  se  interpreta  como  un  desplazamiento
       indirecto. Eso significa que el número tras  el  paréntesis  se  emplea
       como  un  desplazamiento  en  el  fichero.  Se  lee  el  valor  en  tal
       desplazamiento, y se emplea de  nuevo  como  un  desplazamiento  en  el
       fichero.    Los   desplazamientos   indirectos   son   de   la   forma:
       ((x[.[bslBSL]][+-][y]).  El valor de x se emplea como un desplazamiento
       en  el  fichero.  Se  lee  en  tal sitio un byte, un entero corto o uno
       largo, dependiendo del especificador de tipo [bslBSL].   Los  tipos  en
       mayúsculas  interpretan  el  número  como  un valor ascendente hacia la
       derecha, mientras que las versiones en minúsculas lo  interpretan  como
       ascendente  hacia la izquierda. A ese número se le suma el valor de y y
       el resultado se emplea como un desplazamiento en el  fichero.  El  tipo
       predeterminado si no se especifica uno es long, un entero largo.

       A  veces  uno  no sabe la posición exacta puesto que ésta depende de la
       longitud de los campos anteriores. Entonces  se  puede  especificar  un
       desplazamiento  o posición relativa al final del último campo del nivel
       superior  (por  supuesto  esto  sólo  puede  hacerse  para  pruebas  en
       subniveles,  como  en  las  que  empiezan  con  >).  Tal desplazamiento
       relativo se especifica empleando & como prefijo del desplazamiento.

FALLOS

       Los formatos long,  belong,  lelong,  short,  beshort,  leshort,  date,
       bedate,   y  ledate  son  dependientes  del  sistema;  quizás  deberían
       especificarse como un número de bytes (2B, 4B, etc.),  puesto  que  los
       ficheros  que se están reconociendo vienen normalmente de un sistema en
       el que las longitudes son invariantes.

       No hay (actualmente)  soporte  para  que  se  empleen  datos  con  sexo
       (endianess) especificado en desplazamientos indirectos.

VÉASE TAMBIÉN

       file(1) - la orden que lee este fichero.

                                Dominio Público                       MAGIC(4)