Provided by: manpages-es-extra_0.8a-19_all 

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)