Nombre
archivo – determinar el tipo de archivo
Sinopsis
archivo archivo …
archivo -C
archivo
Descripción
Esta página de manual de documentos versión 5.04 del archivo de comandos.
el archivo prueba cada argumento en un intento de clasificarlo. Hay tres conjuntos de pruebas, realizadas en este orden: pruebas del sistema de archivos, pruebas mágicas y pruebas de idioma. La primera prueba que tiene éxito hace que se imprima el tipo de archivo.
El tipo impreso generalmente contendrá una de las palabras texto (el archivo contiene solo caracteres de impresión y unos pocos caracteres de control comunes y es probablemente seguro de leer en un terminal ASCII), ejecutable (el archivo contiene el resultado de compilar un programa en una forma comprensible para algún UNIXkernel u otro), o datos que significan cualquier otra cosa (los datos generalmente son ‘binarios’ o no imprimibles). Las excepciones son formatos de archivo conocidos (archivos core, tararchives) que se sabe que contienen datos binarios. Al modificar archivos mágicos o el propio programa, asegúrese de conservar estas palabras clave. Los usuarios dependen de saber que todos los archivos legibles en un directorio tienen la palabra ‘texto’ impresa. No hagas lo que hizo Berkeley y cambia ‘texto de comandos de shell’ a ‘script de shell’.
Las pruebas del sistema de archivos se basan en examinar el retorno de una llamada al sistema stat(2). El programa comprueba si el archivo está vacío, o si se trata de algún tipo de archivo especial. Cualquier tipo de archivo conocido apropiado para el sistema en el que se está ejecutando (sockets, enlaces simbólicos o tuberías con nombre (FIFOs) en aquellos sistemas que los implementan) se intuye si se definen en el archivo de encabezado del sistema
Las pruebas mágicas se utilizan para verificar archivos con datos en formatos fijos particulares. El ejemplo canónico de esto es un ejecutable binario (programa compilado)un archivo.out, cuyo formato está definido en #include <a.out.h>
y, posiblemente, #include <exec.h>
en el directorio include estándar. Estos archivos tienen un’ número mágico ‘ almacenado en un lugar particular cerca del comienzo del archivo que le dice al sistema operativo UNIX que el archivo es un ejecutable binario, y cuál de varios tipos del mismo. El concepto de «magia» se ha aplicado por extensión a los archivos de datos. Cualquier archivo con algún identificador invariante en un pequeño desplazamiento fijo en el archivo generalmente se puede describir de esta manera. La información que identifica estos archivos se lee del archivo mágico compilado / usr / share / misc / magic.mgc, o los archivos del directorio / usr / share / misc / magic si el archivo compilado no existe. Además, si HOME INICIO/.magia.mgc o HOME HOME/.magic existe, se utilizará con preferencia a los archivos magic del sistema. Si existe/etc / magic, se utilizará junto con otros archivos magic.
Si un archivo no coincide con ninguna de las entradas del archivo magic, se examina para ver si parece ser un archivo de texto. Los conjuntos de caracteres ASCII, ISO-8859-x, no ISO de 8 bits extendidos (como los utilizados en sistemas Macintosh e IBM PC), Unicode codificado en UTF-8, Unicode codificado en UTF-16 y EBCDIC se distinguen por los diferentes rangos y secuencias de bytes que constituyen texto imprimible en cada conjunto. Si un archivo supera cualquiera de estas pruebas, se informa de su conjunto de características. Los archivos ASCII, ISO-8859-x, UTF-8 y ASCII extendido se identifican como ‘texto’ porque serán mayormente legibles en casi cualquier terminal; UTF-16 y EBCDIC son solo ‘datos de caracteres’ porque, si bien contienen texto, es texto que requerirá traducción antes de que pueda leerse. Además, file intentará determinar otras características de los archivos de tipo texto. Si las líneas de un archivo están terminadas por CR, CRLF o NEL, en lugar del estándar Unix LF, se informará de esto. También se identificarán los archivos que contengan secuencias de escape incrustadas o sobreesfuerzo.
Una vez que el archivo ha determinado el conjunto de caracteres utilizado en un archivo de tipo de texto, intentará determinar en qué idioma está escrito el archivo. Las pruebas de idiomas buscan cadenas particulares (cf. # incluye nombres <.h>
) que puede aparecer en cualquier lugar de los primeros bloques de un archivo. Por ejemplo, la palabra clave. br indica que el archivo es probablemente un archivo de entrada troff (1), al igual que la estructura de la palabra clave indica un programa C. Estas pruebas son menos confiables que los dos grupos anteriores, por lo que se realizan en último lugar. Las rutinas de prueba de idiomas también prueban algunas misceláneas (como los archivos tar(1)).
Cualquier archivo que no se pueda identificar como escrito en cualquiera de los conjuntos de caracteres enumerados anteriormente se dice simplemente que es ‘data’.
Opciones
-b, --brief
No anteponga nombres de archivo a las líneas de salida (modo breve).
– C, compile compile
Escribe una magia.archivo de salida mgc que contiene una versión previamente analizada del archivo o directorio magic.
– c, checking checking-printout
Causa una impresión de comprobación de la forma analizada del archivo mágico. Esto se usa generalmente junto con el indicador-m para depurar un nuevo archivo magic antes de instalarlo.
-e, exclude exclude testname
Excluya la prueba nombrada en testname de la lista de pruebas realizadas para determinar el tipo de archivo. Los nombres de prueba válidos son:
apptype
tipo de aplicación EMX (solo en EMX).
text ‘ Varios tipos de archivos de texto (esta prueba intentará adivinar la codificación de texto, independientemente de la configuración de la opción ‘codificación’).
codificación
Diferentes codificaciones de texto para pruebas de magia suave.
tokens Busca tokens conocidos dentro de archivos de texto.
cdf ‘ Imprime detalles de Archivos de Documentos Compuestos.
compress
Busca y busca archivos comprimidos en su interior.
elf ‘ Imprime los detalles del archivo ELF.
soft ‘ Consulta archivos mágicos.
tar ‘ Examina los archivos tar.
– F, separator separator separator
Utilice la cadena especificada como separador entre el nombre del archivo y el resultado del archivo devuelto. El valor predeterminado es ‘:’.
– f, files files-from archivo de nombres
Lea los nombres de los archivos a examinar desde el archivo de nombres (uno por línea) antes de la lista de argumentos. Debe estar presente el archivo de nombre o al menos un archivo de archivo; para probar la entrada estándar, use ‘-‘ como argumento de nombre de archivo.la opción
-h, no no-dereference
hace que no se sigan enlaces simbólicos (en sistemas que admiten enlaces simbólicos). Este es el valor predeterminado si la variable de entorno POSIXLY_CORRECT no está definida.
– i, m mime
Hace que el comando file genere cadenas de tipo mime en lugar de las más tradicionales legibles por humanos. Por lo tanto, puede decir ‘text/plain; charset=us-ascii’ más que ‘ASCII text’. Para que esta opción funcione, file cambia la forma en que maneja los archivos reconocidos por el propio comando (como muchos de los tipos de archivos de texto, directorios, etc.), y hace uso de un archivo ‘mágico’ alternativo. (Consulte la sección ARCHIVOS, a continuación).
type mime-type, encoding mime-encoding
Como-i, pero imprime solo los elementos especificados.la opción
-L, dere dereference
hace que se sigan enlaces simbólicos, como la opción con nombre similar en ls (1) (en sistemas que admiten enlaces simbólicos). Este es el valor predeterminado si se define la variable de entorno POSIXLY_CORRECT.
– m, magic magic-file magicfiles
Especifica una lista alternativa de archivos y directorios que contienen magia. Puede ser un solo elemento o una lista separada por dos puntos. Si se encuentra un archivo mágico compilado junto a un archivo o directorio, se utilizará en su lugar.
-N, no no-pad
No rellene nombres de archivo para que se alineen en la salida.
– n, no no-buffer
Fuerza la salida estándar a vaciarse después de comprobar cada archivo. Esto solo es útil si se comprueba una lista de archivos. Está diseñado para ser utilizado por programas que desean filetypeoutput de una tubería.
– p, preserve preserve-date
En sistemas que admiten utime (2) o utimes(2), intente preservar el tiempo de acceso de los archivos analizados, para pretender que ese archivo nunca los lea.
-r ,raw raw
No traduce caracteres no imprimibles a \ooo. Normalmente, file traduce caracteres no imprimibles a su representación octal.
-s, files special-files
Normalmente, file solo intenta leer y determinar el tipo de archivos de argumentos que los informes de stat(2) son archivos ordinarios. Esto evita problemas, ya que la lectura de archivos especiales puede tener consecuencias peculiares. Especificar la opción-s hace que file también lea archivos de argumentos que son archivos especiales de caracteres de bloque o de caracteres. Esto es útil para determinar los tipos de sistema de archivos de los datos en particiones de disco sin procesar, que son archivos especiales de bloque. Esta opción también hace que el archivo no tenga en cuenta el tamaño del archivo según lo informado por stat(2), ya que en algunos sistemas informa de un tamaño cero para las particiones de disco sin procesar.
-v, version version
Imprima la versión del programa y salga.
– z, uncom uncompress
Intente buscar dentro de los archivos comprimidos.
help help
Imprima un mensaje de ayuda y salga.
Archivos
/usr/share/misc/magic.mgc
Lista compilada predeterminada de magia.Directorio/usr/share/misc / magic que contiene archivos mágicos predeterminados.
Entorno
La variable de entorno MAGIC se puede usar para establecer el nombre de archivo magic predeterminado. Si se establece esa variable, file no intentará abrir$HOME/.magia. añade el archivo ‘.mgc’ al valor de esta variable, según proceda. La variable de entorno POSIXLY_CORRECT controla (en sistemas que admiten enlaces simbólicos) si file intentará seguir enlaces simbólicos o no. Si se establece, el archivo sigue el enlace simbólico, de lo contrario no lo hace. Esto también está controlado por las opciones-L y-h.
Véase También
magic (5), strings(1), od(1), hexdump(1,) file(1posix)
Conformidad con los estándares
Se cree que este programa supera la Definición de ARCHIVO de Interfaz System V(CMD), tan cerca como se puede determinar a partir del lenguaje vago contenido en el mismo.Su comportamiento es principalmente compatible con el programa System V del mismo nombre. Sin embargo, esta versión sabe más magia, por lo que producirá una salida diferente (aunque más precisa) en muchos casos.
La única diferencia significativa entre esta versión y System V es que esta versión trata cualquier espacio en blanco como delimitador, por lo que los espacios en las cuerdas de patrones deben escaparse. Por ejemplo,
>10 string language impress (imPRESS data)
en un archivo magic existente tendría que cambiarse a
>10 string language\ impress (imPRESS data)
Además, en esta versión, si una cadena de patrón contiene una barra invertida, debe escaparse. Por ejemplo,
0 string \begindata Andrew Toolkit document
en un archivo magic existente tendría que cambiarse a
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2 y posteriores de Sun Microsystems incluyen un comando de archivo derivado del System V, pero con algunas extensiones. Mi versión difiere de la de Sun solo en aspectos menores. Incluye la extensión del operador’ &’, utilizado como, por ejemplo,
>16 long&0x7fffffff >0 not stripped
Directorio mágico
Las entradas del archivo mágico se han recopilado de varias fuentes, principalmente de USENET, y han sido aportadas por varios autores. Christos Zoulas (dirección a continuación) recopilará entradas de archivos mágicos adicionales o corregidas. Periódicamente se distribuirá una consolidación de entradas de archivos mágicos.
El orden de las entradas en el archivo magic es significativo. Dependiendo del sistema que esté utilizando, el orden en que se ensamblan puede ser incorrecto. Si su comando archivo antiguo utiliza un archivo mágico, mantenga el archivo mágico antiguo para fines de comparación (cámbielo a /usr/share/misc / magic.orig).
Ejemplos
$ file file.c file /dev/{wd0a,hda}file.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
enlazado dinámicamente (utiliza libs compartidas), despojado
/ dev / wd0a: especial de bloque (0/0)
/dev / hda: especial de bloque (3/0)
file file-s/dev / wd0{b, d}
/ dev / wd0b: datos
/dev / wd0d: sector de arranque x86
Historia
Ha habido un comando de archivo en cada UNIX desde al menos la Versión 4 de la Investigación (página de manual de noviembre de 1973). La versión System V introdujo un gran cambio significativo: la lista externa de tipos mágicos. Esto ralentizó ligeramente el programa, pero lo hizo mucho más flexible.
Este programa, basado en la versión System V, fue escrito por Ian Darwin <[email protected]> sin mirar el código fuente de nadie más.
John Gilmore revisó el código extensamente, haciéndolo mejor que la primera versión. Geoff Collyer encontró varias deficiencias y proporcionó algunas entradas de archivos mágicas. Contribuciones del operador»& » de Rob McMahon, [email protected], 1989.Guy Harris, [email protected], hizo muchos cambios desde 1993 hasta el presente.
Desarrollo y mantenimiento primario desde 1990 hasta la actualidad por Christos Zoulas ([email protected]).
Alterado por Chris Lowth, [email protected], 2000: Maneje la opción-i para generar cadenas de tipo mime, utilizando un archivo mágico alternativo y lógica interna.
Modificado por Eric Fischer ([email protected]), julio de 2000, para identificar códigos de caracteres e intentar identificar los idiomas de archivos no ASCII.
Alterado por Reuben Thomas ([email protected]), de 2007 a 2008, para mejorar el soporte MIME y combinar magia MIME y no MIME, soporta directorios, así como archivos de magia, aplica muchas correcciones de errores y mejora el sistema de compilación.
La lista de colaboradores del directorio’ magic ‘ (archivos mágicos) es demasiado larga para incluirla aquí. Sabes quién eres, gracias. Muchos contribuidores se listan en los archivos fuente.
Aviso legal
Copyright © Ian F. Darwin, Toronto, Canadá, 1986-1999. Cubierto por los derechos de autor de la Distribución de Software de Berkeley estándar; consulte el archivo LEGAL.AVISO en la distribución de recursos.
Los archivos tar.h e is_tar.c fueron escritas por John Gilmore desde su programa tar(1) de dominio público, y no están cubiertas por la licencia anterior.
Bugs
Debe haber una mejor manera de automatizar la construcción del archivo Magic desde todo el glop de Magdir. ¿Qué es eso?
el archivo utiliza varios algoritmos que favorecen la velocidad sobre la precisión, por lo que puede ser engañado sobre el contenido de los archivos de texto.
El soporte para archivos de texto (principalmente para lenguajes de programación) es simplista, ineficiente y requiere recompilación para actualizarse.
La lista de palabras clave en ascmagic probablemente pertenezca al archivo Magic. Esto se puede hacer usando alguna palabra clave como ‘ * ‘ para el valor de desplazamiento.
Se quejan de conflictos en las entradas de archivos mágicos. ¿Cree una regla para que las entradas mágicas se ordenen en función del desplazamiento del archivo en lugar de la posición dentro del archivo mágico?
Esta página de manual, y en particular esta sección, es demasiado larga.
Código de retorno
El archivo devuelve 0 en caso de éxito y no cero en caso de error.
Si el archivo nombrado por el operando de archivo no existe, no se puede leer o no se puede determinar el tipo de archivo nombrado por el operando de archivo, esto no se considera un error que afecte al estado de salida.
Disponibilidad
Puede obtener la última versión del autor original por FTP anónimo en ftp.astron.com en el directorio /pub/file/file-X. YZ.alquitrán.gz
BSD 9 de octubre de 2008 BSD