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)