Provided by: manpages-es-extra_0.8a-19_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 número mágico.  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)