Nom
fichier – déterminer le type de fichier
Synopsis
fichier fichier…
file-C
file
Description
Cette page de manuel documente la version 5.04 de la commande file.
file teste chaque argument pour tenter de le classer. Il existe trois ensembles de tests, effectués dans cet ordre: les tests du système de fichiers, les tests magiques et les tests de langue. Le premier test qui réussit provoque l’impression du type de fichier.
Le type imprimé contiendra généralement l’un des mots text (le fichier ne contient que des caractères d’impression et quelques caractères de contrôle communs et peut être facilement lu sur un terminal ASCII), exécutable (le fichier contient le résultat de la compilation d’un programme sous une forme compréhensible par UNIXkernel ou un autre), ou data signifiant autre chose (les données sont généralement « binaires » ou non imprimables). Les exceptions sont les formats de fichiers bien connus (fichiers de base, tararchives) qui sont connus pour contenir des données binaires. Lorsque vous modifiez des fichiers Magic ou le programme lui-même, assurez-vous de conserver ces mots clés. Les utilisateurs dépendent deconnaître que tous les fichiers lisibles dans un répertoire ont le mot « texte » imprimé. Ne faites pas comme Berkeley et changez le texte des commandes shell en script shell.
Les tests du système de fichiers sont basés sur l’examen du retour d’un appel système stat(2). Le programme vérifie si le fichier est vide ou s’il s’agit d’une sorte de fichier spécial. Tous les types de fichiers connus appropriés au système sur lequel vous utilisez (sockets, liens symboliques ou canaux nommés (FIFO) sur les systèmes qui les implémentent) sont intuitifs s’ils sont définis dans le fichier d’en-tête du système
Les tests magiques sont utilisés pour rechercher des fichiers avec des données dans des formats fixes particuliers. L’exemple canonique de ceci est un fichier exécutable binaire (programme compilé) a.out, dont le format est défini dans #include <a.out.h >
et éventuellement #include < exec.h >
dans le répertoire include standard. Ces fichiers ont un « nombre magique » stocké à un endroit particulier près du début du fichier qui indique au système d’exploitation UNIX que le fichier est un exécutable binaire, et lequel de plusieurs types de celui-ci. Le concept de « magie » a été appliqué par extension aux fichiers de données. Tout fichier avec un identifiant invariant à un petit décalage fixe dans le fichier peut généralement être décrit de cette manière. Les informations identifiant ces fichiers sont lues à partir du fichier magic compilé /usr/share/misc/magic.mgc, ou les fichiers du répertoire /usr/share/misc/magic si le fichier compilé n’existe pas. En outre, siHOMEACCUEIL /.magie.mgc ouHOMEACCUEIL /.magic existe, il sera utilisé de préférence aux fichiers magic système. Si /etc/magic existe, il sera utilisé avec d’autres fichiers magic.
Si un fichier ne correspond à aucune des entrées du fichier magic, il est examiné pour voir s’il semble s’agir d’un fichier texte. Les jeux de caractères ASCII, ISO-8859-x, non ISO 8-bitextended-ASCII (tels que ceux utilisés sur les systèmes Macintosh et IBM PC), Unicode codé en UTF-8, Unicode codé en UTF-16 et EBCDIC peuvent être distingués par les différentes plages et séquences d’octets qui constituent du texte imprimable dans chaque jeu. Si un fichier réussit l’un de ces tests, sonensemble de caractères est signalé. Les fichiers ASCII, ISO-8859-x, UTF-8 et extended-ASCII sont identifiés comme « texte » car ils seront principalement lisibles sur presque tous les terminaux; UTF-16 et EBCDIC ne sont que des « données de caractères » car, bien qu’elles contiennent du texte, c’est du texte qui nécessitera une traduction avant de pouvoir être lu. En outre, file tentera de déterminer d’autres caractéristiques des fichiers de type texte. Si les lignes d’un fichier sont terminées par CR, CRLF ou NEL, au lieu de la LF standard Unix, cela sera signalé. Les fichiers contenant des séquences d’échappement intégrées ou un dépassement seront également identifiés.
Une fois que le fichier a déterminé le jeu de caractères utilisé dans un fichier de type texte, il tentera de déterminer dans quelle langue le fichier est écrit. Les tests de langue recherchent des chaînes particulières (cf. # incluez les noms <.h>
) qui peut apparaître n’importe où dans les premiers blocs d’un fichier. Par exemple, le mot-clé .br indique que le fichier est très probablement un fichier d’entrée troff(1), tout comme la structure de mot-clé indique un programme C. Ces tests sont moins fiables que les deux groupes précédents, ils sont donc effectués en dernier. Les routines languagetest testent également certains mélanges (comme les archives tar(1)).
Tout fichier qui ne peut pas être identifié comme ayant été écrit dans l’un des jeux de caractères énumérés ci-dessus est simplement dit « données ».
Options
-b, --brief
Ne pas ajouter les noms de fichiers aux lignes de sortie (mode bref).
-C,compilecompile
Écrire une magie.fichier de sortie mgc contenant une version pré-analysée du fichier ou du répertoire magic.
-c,checkingchecking-printout
Provoque une vérification de l’impression de la forme analysée du fichier magic. Ceci est généralement utilisé en conjonction avec l’indicateur -m pour déboguer un nouveau fichier magic avant de l’installer.
-e,excludeexclude testname
Excluez le test nommé dans testname de la liste des tests effectués pour déterminer le type de fichier. Les noms de test valides sont :
apptype
Type d’application EMX (uniquement sur EMX).
text’ Différents types de fichiers texte (ce test va essayer de deviner l’encodage du texte, quel que soit le paramètre de l’option ‘encoding’).
encodage
Différents encodages de texte pour les tests de magie douce.
tokens’ Recherche les tokens connus dans les fichiers texte.
cdf’Imprime les détails des fichiers de documents composés.
compress
Recherche et recherche les fichiers compressés.
elf’Imprime les détails du fichier ELF.
soft’ Consulte les fichiers magiques.
tar’ Examine les fichiers tar.
-F, separatorseparator separator
Utilisez la chaîne spécifiée comme séparateur entre le nom du fichier et le résultat du fichier renvoyé. La valeur par défaut est ‘:’.
-f,filesfiles-from namefile
Lisez les noms des fichiers à examiner à partir du fichier namefile (un par ligne) avant la liste d’arguments. Un fichier de noms ou au moins un nom de fichier doit être présent ; pour tester l’entrée standard, utilisez ‘-‘ comme argument de nom de fichier.L’option
-h,nono-déréférencement
empêche le suivi des liens symboliques (sur les systèmes prenant en charge les liens symboliques). C’est la valeur par défaut si la variable d’environnement POSIXLY_CORRECT n’est pas définie.
-i,mmime
Fait que la commande file génère des chaînes de type mime plutôt que les chaînes plus traditionnelles lisibles par l’homme. Ainsi, il peut dire ‘text /plain; charset= us-ascii’ plutôt que ‘texte ASCII’. Pour que cette option fonctionne, file modifie la façon dont il gère les fichiers reconnus par la commande elle-même (tels que de nombreux types de fichiers de texte, répertoires, etc.), et utilise un fichier « magique » alternatif. (Voir la section FICHIERS, ci-dessous).
typemime-type,encodingmime-encoding
Comme -i, mais n’imprime que le ou les éléments spécifiés.L’option
-L,derdéréférencement
entraîne le suivi des liens symboliques, comme l’option de même nom dans ls(1) (sur les systèmes qui prennent en charge les liens symboliques). C’est la valeur par défaut si la variable d’environnement POSIXLY_CORRECT est définie.
-m,magicmagic-file magicfiles
Spécifie une liste alternative de fichiers et de répertoires contenant magic. Il peut s’agir d’un seul élément ou d’une liste séparée par deux-points. Si un fichier magique compilé est trouvéà l’intérieur d’un fichier ou d’un répertoire, il sera utilisé à la place.
-N,nono-pad
Ne tamponnez pas les noms de fichiers pour qu’ils s’alignent dans la sortie.
-n,nono-buffer
Force la sortie standard à être vidée après avoir vérifié chaque fichier. Ceci n’est utile que si vous vérifiez une liste de fichiers. Il est destiné à être utilisé par les programmes qui veulent filetypeoutput à partir d’un tuyau.
-p,preservepreserve-date
Sur les systèmes prenant en charge utime(2) ou utimes(2), essayez de préserver le temps d’accès des fichiers analysés, de faire comme si ce fichier ne les lisait jamais.
-r,rawraw
Ne traduit pas les caractères non imprimables en \ooo. Normalement, file traduit les caractères non imprimables en leur représentation octale.
-s,specialspecial-files
Normalement, file tente uniquement de lire et de déterminer le type de fichiers d’arguments dont les rapports stat(2) sont des fichiers ordinaires. Cela évite les problèmes, carla lecture de fichiers spéciaux peut avoir des conséquences particulières. En spécifiant l’option -s, file lit également les fichiers d’arguments qui sont des fichiers spéciaux de bloc ou de caractères. Ceci est utile pour déterminer les types de système de fichiers des données dans les partitions de disque brutes, qui sont des fichiers spéciaux de bloc. Cette option fait également en sorte que file ignore la taille du fichier telle que rapportée par stat(2) car sur certains systèmes, il signale une taille nulle pour les partitions de disque brutes.
-v,versionversion
Affiche la version du programme et quitte.
-z,uncompuncompress
Essayez de regarder à l’intérieur des fichiers compressés.
helphelp
Affiche un message d’aide et quitte.
Fichiers
/usr/share/misc/magic.mgc
Liste compilée par défaut de magic.
Répertoire /usr/share/misc/magic’ contenant les fichiers magic par défaut.
Environment
La variable d’environnement MAGIC peut être utilisée pour définir le nom de fichier magic par défaut. Si cette variable est définie, le fichier ne tentera pas d’ouvrirHOMEHOME/.magie. le fichier ajoute ‘.mgc’ à la valeur de cette variable selon le cas. La variable d’environnement POSIXLY_CORRECT contrôle (sur les systèmes qui supportent les liens symboliques), si le fichier tentera de suivre les liens symboliques ou non. S’il est défini, le fichier suit le lien symbolique, sinon ce n’est pas le cas. Ceci est également contrôlé par les options -L et -h.
Voir aussi
magic(5), strings(1), od(1), hexdump(1,) file(1posix)
Conformité aux normes
On pense que ce programme dépasse la Définition de FICHIER de l’interface System V (CMD), aussi près que l’on peut le déterminer à partir du langage vague qu’il contient.Son comportement est principalement compatible avec le programme System V du même nom. Cette version connaît plus de magie, cependant, elle produira donc une sortie différente (quoique plus précise) dans de nombreux cas.
La seule différence significative entre cette version et System V est que cette version traite tout espace blanc comme un délimiteur, de sorte que les espaces dans les patternstrings doivent être échappés. Par exemple,
>10 string language impress (imPRESS data)
dans un fichier magic existant devrait être remplacé par
>10 string language\ impress (imPRESS data)
De plus, dans cette version, si une chaîne de motif contient une barre oblique inverse, elle doit être échappée. Par exemple,
0 string \begindata Andrew Toolkit document
dans un fichier magic existant devrait être remplacé par
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2 et les versions ultérieures de Sun Microsystems incluent une commande de fichier dérivée de System V one, mais avec quelques extensions. Ma version diffère de celle de Sun uniquement de manière mineure. Il inclut l’extension de l’opérateur ‘&’, utilisé comme, par exemple,
>16 long&0x7fffffff >0 not stripped
Répertoire Magic
Les entrées du fichier magic ont été collectées à partir de diverses sources, principalement USENET, et contribuées par divers auteurs. Christos Zoulas (adresse ci-dessous) collectera des entrées de fichier magic supplémentaires ou corrigées. Une consolidation des entrées de fichier magic sera distribuée périodiquement.
L’ordre des entrées dans le fichier magic est significatif. Selon le système que vous utilisez, l’ordre dans lequel ils sont assemblés peut être incorrect. Si votre ancienne commande de fichier utilise un fichier magique, conservez l’ancien fichier magique à des fins de comparaison (renommez-le en /usr/share/misc/magic.orig).
Exemples
$ file file.c file /dev/{wd0a,hda}file.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
lié dynamiquement (utilise des bibliothèques partagées), dépouillé
/dev/wd0a: bloc spécial(0/0)
/dev/hda: bloc spécial(3/0)
filefile-s/dev/wd0{b, d}
/dev/wd0b: données
/dev/ wd0d: x86 boot sector
Historique
Il existe une commande file dans tous les UNIX depuis au moins la version de recherche 4 (page de manuel datée de novembre 1973). La version System V en a introduit unchangement majeur important: la liste externe des types de magie. Cela a légèrement ralenti le programme mais l’a rendu beaucoup plus flexible.
Ce programme, basé sur la version System V, a été écrit par Ian Darwin <[email protected] > sans regarder le code source de personne d’autre.
John Gilmore a largement révisé le code, le rendant meilleur que la première version. Geoff Collyer a trouvé plusieurs insuffisances et a fourni des éléments de fichier magiques. Contributions de l’opérateur ‘&’ de Rob McMahon, [email protected] , 1989.
Guy Harris, [email protected] , a apporté de nombreux changements de 1993 à nos jours.
Développement et maintenance primaires de 1990 à nos jours par Christos Zoulas ([email protected] ).
Modifié par Chris Lowth, [email protected] , 2000: Gérez l’option -i pour sortir des chaînes de type mime, en utilisant un fichier magique alternatif et une logique interne.
Modifié par Eric Fischer ([email protected] ), juillet 2000, pour identifier les codes de caractères et tenter d’identifier les langues des fichiers non ASCII.
Modifié par Reuben Thomas ([email protected] ), de 2007 à 2008, pour améliorer le support MIME et fusionner la magie MIME et non-MIME, prendre en charge les répertoires ainsi que les fichiers ofmagic, appliquer de nombreuses corrections de bugs et améliorer le système de construction.
La liste des contributeurs au répertoire ‘magic’ (fichiers magic) est trop longue pour être incluse ici. Vous savez qui vous êtes; merci. De nombreux contributeurs sont listés dans les fichiers sources.
Mentions légales
Copyright © Ian F. Darwin, Toronto, Canada, 1986-1999. Couvert par le droit d’auteur standard de la distribution de logiciels Berkeley; voir le fichier LÉGAL.REMARQUE dans la distribution des sources.
Les fichiers tar.h et is_tar.c ont été écrits par John Gilmore à partir de son programme tar(1) du domaine public et ne sont pas couverts par la licence ci-dessus.
Bugs
Il doit y avoir une meilleure façon d’automatiser la construction du fichier Magic à partir de tout le glop de Magdir. Qu’est-ce que c’est?
le fichier utilise plusieurs algorithmes qui privilégient la vitesse à la précision, il peut donc être induit en erreur sur le contenu des fichiers texte.
La prise en charge des fichiers texte (principalement pour les langages de programmation) est simpliste, inefficace et nécessite une recompilation pour être mise à jour.
La liste des mots-clés dans ascmagic appartient probablement au fichier Magic. Cela pourrait être fait en utilisant un mot clé comme ‘*’ pour la valeur de décalage.
Se plaindre des conflits dans les entrées du fichier magic. Faire une règle que les entrées magiques trient en fonction du décalage du fichier plutôt que de la position dans le fichier magique?
Cette page de manuel, et en particulier cette section, est trop longue.
Code de retour
le fichier renvoie 0 en cas de succès et non nul en cas d’erreur.
Si le fichier nommé par l’opérande de fichier n’existe pas, ne peut pas être lu ou si le type du fichier nommé par l’opérande de fichier ne peut pas être déterminé, cela n’est pas considéré comme une erreur qui affecte l’état de sortie.
Disponibilité
Vous pouvez obtenir la dernière version de l’auteur original par FTP anonyme sur ftp.astron.com dans le répertoire /pub/file/file-X.YZ.tar.gz
BSD 9 octobre 2008 BSD