Provided by: manpages-es-extra_0.8a-17_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)