file
utiliza varios tipos de prueba :
1: Si el archivo no existe, no se puede leer, o no se pudo determinar su estado, el resultado indicará que el archivo se procesó, pero que su tipo no se pudo determinar.
Esto saldrá como cannot open file: No such file or directory
.
2: Si el archivo no es un archivo normal, se identificará su tipo de archivo. El directorio de tipos de archivo, FIFO, socket, bloque especial y carácter especial se identificarán como tales. También se pueden identificar otros tipos de archivos definidos por la implementación. Si el archivo es un enlace simbólico, por defecto el enlace se resolverá y el archivo probará el tipo de archivo al que hace referencia el enlace simbólico. (Consulte las opciones -h
y más -i
abajo).
Esto se generará como .: directory
y /dev/sda: block special
. Gran parte del formato para este y el punto anterior está parcialmente definido por POSIX : puede confiar en que ciertas cadenas estén en la salida.
3: Si la longitud del archivo es cero, se identificará como un archivo vacío.
Esto es foo: empty
.
4: La utilidad de archivo examinará un segmento inicial de archivo y hará una suposición para identificar su contenido en base a pruebas sensibles a la posición. (No se garantiza que la respuesta sea correcta; consulte las opciones -d, -M y -m a continuación).
5: La utilidad de archivo examinará el archivo y adivinará la identificación de su contenido en base a pruebas de sistema predeterminadas sensibles al contexto. (No se garantiza que la respuesta sea correcta).
Estos dos usan la identificación del número mágico y son la parte más interesante del comando. Un número mágico es una secuencia especial de bytes que se encuentra en un lugar conocido en un archivo que identifica su tipo. Tradicionalmente, ese lugar son los primeros dos bytes, pero el término se ha ampliado aún más para incluir cadenas más largas y otras ubicaciones. Vea esta otra pregunta para obtener más detalles sobre los números mágicos en el file
comando.
El file
comando tiene una base de datos de estos números y a qué tipo corresponden; esa base de datos generalmente está en /usr/share/mime/magic
y asigna el contenido del archivo a tipos MIME . El resultado allí (a menudo parte de file -i
si no lo obtiene por defecto) será un tipo de medio definido o una extensión. Las "pruebas sensibles al contexto" utilizan el mismo tipo de enfoque, pero son un poco más difusas. No se garantiza que ninguno de estos sea correcto, pero están destinados a ser buenas conjeturas.
file
también tiene una base de datos que asigna esos tipos a nombres, por lo que sabrá que un archivo que ha identificado application/pdf
puede describirse como a PDF document
. Esos nombres legibles por humanos también pueden estar localizados en otro idioma. Estos siempre serán una descripción de alto nivel del tipo de archivo de una manera que una persona lo entienda, en lugar de una máquina.
La mayoría de los diferentes resultados que puede obtener vendrán de estas etapas. Puede consultar el magic
archivo para obtener una lista de los tipos admitidos y cómo se identifican: mi sistema conoce 376 tipos diferentes. Los nombres dados y los tipos admitidos están determinados por el empaquetado y la configuración de su sistema, por lo que su sistema puede admitir más o menos que el mío, pero generalmente hay muchos de ellos. libmagic
también incluye pruebas codificadas adicionales en él.
6: El archivo se identificará como un archivo de datos.
Esto es foo: data
, cuando no pudo descubrir nada sobre el archivo.
También hay otras pequeñas etiquetas que pueden aparecer. Un archivo ejecutable ( +x
) incluirá " executable
" en la salida, generalmente separados por comas. La file
implementación también puede conocer cosas adicionales sobre algunos formatos de archivo para poder describir puntos adicionales sobre ellos, como en su " PDF document, version 1.4
".