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

NOMBRE

       magic - fichero de numeros magicos para la orden file

DESCRIPCI'ON

       Esta  pagina  del  Manual  documenta  el formato del fichero magico que
       emplea la orden file(1), version 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'umero   m'agico.    El   fichero
       /usr/share/misc/magic  especifica  que  numeros magicos hay que buscar,
       que mensaje mostrar si se encuentra un numero magico en  particular,  e
       informacion adicional que haya que extraer del fichero.

       Cada  linea  del  fichero especifica una prueba a realizar.  Una prueba
       compara los datos que  comiencen  en  una  posicion  particular  en  el
       fichero  con  un  valor  numerico  de  1,  2  o 4 bytes o una cadena de
       caracteres. Si la prueba tiene exito, se muestra un mensaje.  La  linea
       consiste en los campos siguientes:

       desplazamiento
                Un numero que especifica el desplazamiento, en bytes, desde el
                principio del fichero de datos que se este 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 mayoria de los sistemas)
                         en el orden de bytes nativo de la maquina.

                long     Un  valor  de  cuatro  bytes  (en  la  mayoria de los
                         sistemas) en el orden de bytes nativo de la maquina.

                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 mayoria de los sistemas)
                         en orden de bytes ascendiente hacia la derecha.

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

                bedate   Un valor de  cuatro  bytes  (en  la  mayoria  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 mayoria de los sistemas)
                         en orden de bytes ascendente hacia la izquierda.

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

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

       Los  tipos  numericos pueden opcionalmente ir seguidos por & y un valor
       numerico, para especificar la operacion de bits Y con dicho valor antes
       de  que se realice la comparacion. 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
              numerico,  este valor se especifica como en el lenguaje C; si es
              una cadena, como una cadena de caracteres  de  C,  permitiendose
              las  secuencias  de  escape  habituales  (como  \n para la nueva
              linea).

              Los valores numericos pueden hacerse preceder  por  un  caracter
              que  indique  la  operacion  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  esten  a  1  en  el  valor especificado, ^, para
              especificar que el valor del fichero debe tener a  0  cualquiera
              de  los  bits  que esten a 1 en el valor especificado, o x, para
              especificar que cualquier valor concordara. Si  el  caracter  se
              omite, se asume que es =.

              Los  valores numericos 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 magico. Esto significa que una linea 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 comparacion tiene exito. Si la
              cadena contiene  una  especificacion  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  informacion adicional que se
       mostrara junto con el tipo del fichero. Una linea que comience  con  el
       caracter > indica pruebas y mensajes a mostrarse adicionales. El numero
       de > en la linea indica el nivel de la prueba; una linea sin  ningun  >
       al  principio  se  considera  que esta en el nivel 0.  Cada linea en el
       nivel n+1 esta bajo el control de la linea en el nivel  n  mas  cercano
       que  la  preceda en el fichero magico.  Si la prueba en una linea en el
       nivel n tiene exito, se realizan las pruebas especificadas en todas las
       lineas  subsiguientes en el nivel n+1 y se muestran los mensajes si las
       pruebas tienen exito. La linea siguiente en  el  nivel  n  termina  con
       esto.   Si  el primer caracter que siga al ultimo > es un ( entonces la
       cadena  tras  el  parentesis  se  interpreta  como  un   desplazamiento
       indirecto.  Eso  significa  que  el numero tras el parentesis 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
       mayusculas interpretan el numero como  un  valor  ascendente  hacia  la
       derecha,  mientras  que las versiones en minusculas lo interpretan como
       ascendente hacia la izquierda. A ese numero 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 posicion exacta puesto que esta  depende  de  la
       longitud  de  los  campos  anteriores. Entonces se puede especificar un
       desplazamiento o posicion relativa al final del ultimo campo del  nivel
       superior  (por  supuesto  esto  solo  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;  quizas   deberian
       especificarse  como  un  numero de bytes (2B, 4B, etc.), puesto que los
       ficheros que se estan 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'EASE TAMBI'EN

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

                                Dominio Publico                       MAGIC(4)