FILE(1) FILE(1)
NOMBRE
file - determina el tipo de ficheros
SINOPSIS
file [ -vbczL ] [ -f nombrefichero ] [ -m ficheromágico ] fichero ...
DESCRIPCIÓN
Esta página del Manual documenta la versión 3.26 de la orden file .
File comprueba cada argumento en un intento de clasificarlo. Hay tres
conjuntos de pruebas, efectuadas en este orden: pruebas de sistemas de
ficheros, pruebas de números mágicos, y pruebas de lenguajes. La
primera prueba que tenga éxito hace que se muestre el tipo del fichero.
El tipo mostrado contendrá usualmente una de las palabras text (texto:
el fichero contiene solamente caracteres ASCII y probablemente es
seguro leerlo en una terminal ASCII ), executable (ejecutable: el
fichero contiene el resultado de la compilación de un programa en una
forma comprensible para algún núcleo UNIX), o data (datos), que
significa cualquier otra cosa (los datos son normalmente `binarios' o
no imprimibles). Las excepciones son los formatos de ficheros bien
conocidos (volcados de memoria, archivos de tar) que se sabe que
contienen datos binarios. Cuando modifique el fichero
/usr/share/misc/magic o el propio programa, conserve estas palabras
reservadas. Muchos programas dependen de que file muestre todos los
ficheros legibles de un directorio con la palabra ``text''. No haga
como hicieron en la versión de Berkeley, que cambiaron ``shell commands
text'' (texto con órdenes del shell) a ``shell script'' (guión del
shell).
Las pruebas de sistemas de ficheros se basan en un examen de la
devolución de una llamada al sistema stat(2). El programa comprueba si
el fichero está vacío, o si es alguna clase de fichero especial.
Cualquier tipo de fichero apropiado al sistema donde se esté (enchufes,
enlaces simbólicos, o tuberías con nombre (FIFOs) en aquellos sistemas
que las implementen) se intuye si está definido en el fichero de
cabecera del sistema sys/stat.h.
Las pruebas de números mágicos se emplean para comprobar ficheros con
datos dispuestos en formatos fijos particulares. El ejemplo canónico
de esto es un fichero ejecutable binario (programa compilado) a.out,
cuyo formato se describe en a.out.h y posiblemente en exec.h en el
directorio normal de ficheros de cabecera. Estos ficheros tienen un
`número mágico' guardado en una posición particular cerca del principio
del fichero, que le dice al sistema operativo UNIX que el fichero es un
binario ejecutable, y de qué tipo de entre unos cuantos. El concepto de
`número mágico' se ha aplicado por extensión a ficheros de datos.
Cualquier fichero con algún identificador invariante en una posición
fija y cercana al principio en el fichero puede normalmente describirse
de esta forma. La información de estos ficheros se lee del `fichero
mágico' /usr/share/misc/magic.
Si un argumento resulta ser un fichero ASCII, file intenta adivinar el
lenguaje en el que está escrito. Las pruebas de lenguaje buscan
cadenas de caracteres particulares (cf. names.h) que pueden aparecer
en cualquier lugar dentro de los primeros bloques de un fichero. Por
ejemplo, la palabra clave .br indica que el fichero es con mucha
probabilidad un fichero de entrada de troff(1), mientras que la palabra
struct puede indicar un programa en C. Estas pruebas son menos
confiables que las de los dos grupos anteriores, de forma que se
realizan en último lugar. Las rutinas de pruebas de lenguajes también
hacen algunas otras comprobaciones (como buscar archivos de tar(1)) y
determinan si el mensaje para un fichero desconocido debe ser `ascii
text' (texto ASCII) o `data' (datos).
OPCIONES
-v Muestra la versión del programa y acaba.
-m lista
Especifica una lista alternativa de ficheros que contienen
números mágicos. Ésta puede constar de un solo fichero, o de
una lista de ficheros separados por signos de dos puntos.
-z Intenta mirar dentro de ficheros comprimidos.
-b No precede las líneas de salida con los nombres de los ficheros
(modo breve).
-c Produce un listado de comprobación de la forma analizada del
fichero mágico. Normalmente esto se emplea en conjunción con -m
para depurar un nuevo fichero mágico antes de instalarlo.
-f nombrefichero
Lee los nombres de los ficheros a examinar desde nombrefichero
(uno por línea) antes de la lista de argumentos. O bien
nombrefichero o bien por lo menos un argumento que sea un
nombre de fichero, debe estar presente; para comprobar la
entrada estándar, emplee `-' como un argumento de nombre de
fichero.
-L Esta opción hace que se sigan los enlaces simbólicos, como la
opción del mismo nombre de ls(1) (en sistemas que admitan
enlaces simbólicos).
FICHEROS
/usr/share/misc/magic - lista predeterminada de números mágicos
ENTORNO
La variable de entorno MAGIC se puede emplear para establecer los
ficheros predeterminados con números mágicos.
VÉASE TAMBIÉN
magic(4) - descripción del formato del fichero mágico.
strings(1), od(1), hexdump(1) - herramientas para examinar ficheros que
no son de texto.
CONFORMANCIA CON ESTÁNDARES
Se cree que este programa excede en comportamiento al descrito por SVID
en FILE(CMD), tanto como uno pueda deducir del vago lenguaje contenido
en dicho documento. Su comportamiento es mayormente compatible con el
programa de System V del mismo nombre. Esta versión sabe de más números
mágicos, sin embargo, por lo que producirá una salida diferente (si
bien más acertada) en muchos casos.
La diferencia más significante entre esta versión y la de System V es
que esta versión trata cualquier espacio en blanco como un delimitador,
de forma que los espacios en cadenas de patrones deben ser protegidos.
Por ejemplo,
>10 string language impress (imPRESS data)
en un fichero mágico existente tendría que cambiarse a
>10 string language\ impress (imPRESS data)
Además, en esta versión, si una cadena patrón contiene una barra
inclinada invertida, debe ser protegida. Por ejemplo
0 string \begindata Andrew Toolkit document
en un fichero mágico existente tendría que cambiarse a
0 string \\begindata Andrew Toolkit document
SunOS en distribuciones 3.2 y siguientes, de Sun Microsystems, incluye
una orden file(1) derivada de la de System V, pero con algunas
extensiones. Mi versión difiere de la de Sun sólo en pequeñas cosas.
Incluye la extensión del operador `&', empleado como, por ejemplo,
>16 long&0x7fffffff >0 not stripped
DIRECTORIO MÁGICO
Las entradas del fichero mágico han sido tomadas de varias fuentes,
principalmente de USENET, y han contribuido varios autores. Christos
Zoulas (su dirección está más abajo) recogerá entradas adicionales o
corregidas del fichero mágico. Se distribuirá periódicamente una
consolidación de las entradas del fichero mágico.
El orden de las entradas en el fichero mágico es significativo.
Dependiendo del sistema que esté Ud. usando, el orden en el que estén
puestas juntas puede ser incorrecto. Si su vieja orden file emplea un
fichero mágico, mantenga el viejo fichero mágico por ahí para
comparación (por ejemplo, renómbrelo a /usr/local/share/magic.orig).
HISTORIA
Ha habido una orden file en cada UNIX desde al menos la Versión 6 de
Investigación (estando fechada la página del Manual en Enero de 1975).
La versión de System V introdujo un cambio importante significativo: la
lista externa de tipos con números mágicos. Esto ralentizaba algo el
programa pero lo hacía mucho más flexible.
Este programa, basado en la versión de System V, ha sido escrito por
Ian Darwin sin mirar el código fuente de nadie.
John Gilmore revisó extensamente el código, haciéndolo mejor que la
primera versión. Geoff Collyer encontró algunas cosas inadecuadas y
proporcionó algunas entradas del fichero mágico. Desde entonces el
programa ha ido evolucionando continuamente.
AUTORES
Escrito por Ian F. Darwin, dirección UUCP {utzoo | ihnp4}!darwin!ian,
dirección Internet ian@sq.com, dirección postal: P.O. Box 603, Station
F, Toronto, Ontario, CANADÁ M4Y 2L8.
Alterado por Rob McMahon, cudcv@warwick.ac.uk, en 1989, para extender
el operador `&' de un simple `x&y != 0' a `x&y op z'.
Alterado por Guy Harris, guy@netapp.com, en 1993, para:
poner el operador `&' ``al viejo estilo'' de nuevo como estaba,
porque 1) el cambio de Rob McMahon rompió con el estilo de uso
anterior, 2) el operador al ``nuevo estilo'' `&' de SunOS, que
esta versión de file también admite, ya maneja también `x&y op
z', y 3) el cambio de Rob no estaba documentado en ningún caso;
añadir múltiples niveles de `>';
añadir las palabras clave ``beshort'', ``leshort'', etc., para
buscar números en el fichero en un orden de bytes específico, en
vez de en el orden de bytes nativo del proceso que esté
ejecutando a file.
Cambios por Ian Darwin y varios autores incluyendo a Christos Zoulas
(christos@astron.com), 1990-1997.
ADVERTENCIA LEGAL
Derechos de copia © Ian F. Darwin, Toronto, Canadá, 1986, 1987, 1988,
1989, 1990, 1991, 1992, 1993.
Este software no está sujeto y no puede hacerse estarlo a cualquier
licencia de la Cía. AT&T, Sun Microsystems Inc., Digital Equipment Co.
Inc. (Compaq), Lotus Development Inc., los Regentes de la Universidad
de California, el Consorcio X ni MIT, ni la FSF (Fundación del Software
Libre).
Este software no está sujeto a ninguna restricción de exportación del
Departamento de Comercio de EE.UU., y puede exportarse a cualquier país
o planeta.
Se permite a cualquiera usar este software para cualquier propósito en
cualquier sistema computador, y alterarlo y redistribuirlo libremente,
sujeto a las siguientes restricciones:
1. El autor no es responsable de las consecuencias del uso de este
software, sin importar cuán malas fueren, incluso si sobrevienen a
causa de defectos en él.
2. El origen de este software no debe ser malinterpretado o alterado,
bien sea explícitamente o por omisión. Puesto que son pocos los
usuarios que alguna vez leen los fuentes, los créditos deben aparecer
en la documentación.
3. Las versiones alteradas deben marcarse explícitamente como tales, y
no pueden hacerse aparecer como si fueran el software original. Puesto
que son pocos los usuarios que alguna vez leen los fuentes, los
créditos deben aparecer en la documentación.
4. Esta nota no puede ser quitada ni alterada (espero que sí pueda ser
traducida, N. del T. :-).
Unos pocos ficheros de soporte (getopt, strtok) distribuidos con este
paquete son de Henry Spencer y están sujetos a los mismos términos que
los de arriba.
Unos pocos ficheros simples de soporte (strtol, strchr) distribuidos
con este paquete están en el dominio público; así quedan marcados.
Los ficheros tar.h e is_tar.c fueron escritos por John Gilmore a partir
de su programa tar de dominio público, y no están cubiertos por las
restricciones de antes.
FALLOS
Debe haber una forma mejor de automatizar la construcción del fichero
Magic a partir de todo lo de Magdir. ¿Cuál será? Aún mejor, el fichero
mágico debería compilarse a forma binaria (digamos, ndbm(3) o, mejor
todavía, cadenas ASCII de longitud fija para su empleo en entornos de
red heterogéneos) para un arranque más rápido. Entonces el programa se
ejecutaría tan rápido como el de la Versión 7 del mismo nombre, con la
flexibilidad de la versión System V.
File emplea algunos algoritmos que favorecen la rapidez sobre el
acierto, de modo que puede equivocarse al adivinar los contenidos de
ficheros ASCII.
El soporte para ficheros ASCII (sobre todo para lenguajes de
programación) es simplista, ineficiente, y requiere recompilación para
actualizarse.
Debería haber una cláusula ``else'' para seguir una serie de líneas de
continuación.
El fichero mágico y las palabras clave deberían admitir expresiones
regulares. Su empleo del TAB ASCII como un delimitador de campo es feo
y hace difícil editar los ficheros, pero es inamovible.
Podría ser interesante permitir letras mayúsculas en las palabras
clave; por ejemplo, órdenes troff(1) frente a macros de páginas man.
El soporte de expresiones regulares haría esto más fácil.
Al programa no le gusta FORTRAN. Debería ser capaz de figurarse si el
fichero es un programa en FORTRAN viendo algunas palabras reservadas
que aparezcan sangradas al principio de la línea. El soporte de
expresiones regulares haría esto más fácil.
La lista de palabras clave de ascmagic probablemente deba pertenecer al
fichero Magic. Esto podría hacerse usando alguna palabra clave como
`*' para el valor de desplazamiento.
Otra mejora sería ordenar el fichero mágico de modo que podamos
simplemente ejecutar todas las pruebas para el primer byte, primera
palabra, primera palabra larga, etc., una vez que la hayamos cogido.
Protestar de conflictos en las entradas del fichero mágico. ¿Construir
una regla para que las entradas mágicas se ordenen basadas en el
desplazamiento dentro del fichero en vez de en la posición dentro del
fichero mágico?
El programa podría proporcionar una forma de dar una estimación de
``cuán buena'' es una estimación. Acabamos quitando adivinaciones
(p.ej. ``From '' como los 5 primeros caracteres de un fichero) porque
no eran tan buenas como otras tentativas (p. ej. ``Newsgroups:'' frente
a "Return-Path:"). Pero aún, si las otras no fueran buenas, debería ser
posible utilizar la primera adivinación.
Este programa es más lento que algunas órdenes file comerciales.
Esta página del Manual, y particularmente esta sección, es demasiado
larga.
DISPONIBILIDAD
Se puede obtener la última versión original del autor mediante FTP
anónimo en ftp.astron.com en el archivo /pub/file/file-X.YY.tar.gz.
Con © pero se puede distribuir FILE(1)