FILE
Section: Manuel de l’utilisateur Linux (1)
Updated: 27 avril 2001
IndexReturn to Main Contents
NOM
file – Déterminer le type d’un fichier
SYNOPSIS
file[-bciknsvzL][-ffichier-noms][-mfichiersmagiques]fichier …
fichier-C[-mfichiermagique ]
DESCRIPTION
Cette page de manuel documente la version 3.37 de la commandefile.
fileteste chaque argument pour essayer de le classifier. Il y a trois types detests, effectués dans cet ordre : tests de système de fichiers, tests denombre magique, et tests de langage. Lepremiertest qui réussit provoque l’affichage du type du fichier.
Le type affiché contient en général l’un des motstext(le fichier ne contient que des caractères imprimables et quelquescaractères de contrôle courants, et peut probablement être lu sans peinesur un terminal ASCII),executable(le fichier contient le résultat de la compilation d’un programme dans uneforme compréhensible par certains noyaux UNIX ou autres), oudatasignifiant tout le reste (les données sont en général de type « binary »,c.-à -d. binaires, ou « non-printable », c.-à -d. non affichables). Lesexceptions sont les formats de fichiers bien connus (fichiers core,archives tar) dont on sait qu’ils contiennent des données binaires. Quandvous modifiez le fichier/usr/share/magicou le programme lui-même,conservez ces mots-clés.Certains programmes se reposent sur le fait que tous les fichiersaccessibles en lecture dans un répertoire doivent être présentés sous leterme « text » (texte) par file. Ne faites pas comme Berkeley(NDT : BSD) qui a remplacé l’expression « shell commands text » (textede commandes shell) par « shell script » (script shell). Notez que lefichier/usr/share/magicest construit mécaniquement à partir d’un tas de petits fichiers situésdans le sous-répertoireMagdirde la distribution du code source de ce programme.
Les tests de système de fichiers sont basés sur l’examen de la sortie del’appel systèmestat(2).Le programme vérifie si le fichier est vide, ou s’il s’agit d’un certaintype de fichier spécial. Tous les types de fichiers connus appropriés à votre système (sockets, liens symboliques ou tubes nommés (FIFOs) sur lessystèmes qui les implémentent) sont reconnus lorsqu’ils sont définis dansle fichier d’en-tête système<sys/stat.h>.
Les tests de nombres magiques sont utilisés pour rechercher des fichierscontenant des données dans des formats fixes particuliers. L’exemple typiqueest un exécutable binaire (programme compilé)a.out,dont le format est défini dansa.out.h,et peut-être aussi dansexec.hdans le répertoire d’inclusion standard. Ces fichiers contiennent un« nombre magique » qui indique au système d’exploitation UNIX quele fichier est un exécutable binaire, et qui donne le type précis parmi cesmultiples types possibles. Le concept de « nombre magique » a étéappliqué par extension aux fichiers de données. Tout fichier contenant unidentificateur invariable à un endroit fixé peut d’habitude être décrit decette façon. Les informations identifiant ces fichiers sont lues à partir dufichier magique compilé/usr/share/magic.mgc,ou/usr/share/magicsi le fichier compilé n’existe pas.
Si un fichier ne correspond à aucune des entrées du fichier magique, il estexaminé afin de voir s’il semble être un fichier texte. Les jeux decaractères ASCII, ISO-8859-x, et ASCII étendu 8 bits non ISO (comme ceuxutilisés sur les systèmes Macintosh et PC IBM), ainsi que les jeux decaractères Unicode encodés en UTF-8 ou en UTF-16, et EBCDIC peuvent êtredifférenciés par l’intermédiaire des différents intervalles et séquencesd’octets qui sont imprimables dans chaque jeu.Si un fichier passe avec succès l’un deces tests, son jeu de caractères est rapporté. Les fichiers ASCII,ISO-8859-x, UTF-8, et ASCII étendu sont identifiés en tant que« text » (texte) car ils sont pour la plupart lisibles sur pratiquementn’importe quel terminal ; UTF-16 et EBCDIC ne sont que des « characterdata » (données caractères) car, bien qu’elles contiennent du texte,celui-ci requiert une traduction avant de pouvoir être lu. De plus,fileessaiera de déterminer d’autres caractéristiques des fichiers de typetexte. Si les lignes d’un fichier sont terminées par CR, CRLF, ou NL, aulieu du LF standard sous Unix, cela sera rapporté. Les fichiers quicontiennent des séquences d’échappement ou du overstriking (NDT : )seront également identifiés.
Une fois quefilea déterminé le jeu de caractères utilisé dans un fichier de type texte, ilessaie de déterminer dans quel langage le fichier est écrit. Les tests delangage recherchent des chaînes de caractères particulières (cf.names.h)qui peuvent apparaître n’importe où dans les premiers blocs d’unfichier. Par exemple, le mot-clé.brindique que le fichier est plus que probablement un fichier d’entréetroff(1),de la même façon que le mot-cléstructindique un programme C. Ces tests sont moins fiables que les deux autrestypes de tests, et sont donc pratiqués en dernier lieu. Les routines detests de langage testent également quelques types divers (comme lesarchivestar(1)).
Tout fichier qui ne peut être identifié comme ayant été écrit dans l’un desjeux de caractères listés plus haut sera rapporté comme étant du type« data » (données).
OPTIONS
- -b
- Ne pas faire précéder les lignes de sortie par le nom des fichiers (mode bref).
- -c
- Afficher pour vérification la version analysée (« parsée ») d’un fichiermagique. Cette option est habituellement utilisée avec-mpour déboguer un nouveau fichier magique avant de l’installer.
- -C
- Écrire un fichier de sortie magic.mgc qui contient une version pré-analyséede file.
- -f fichier-noms
- Lire le nom des fichiers à examiner à partir du fichierfichier-noms(un par ligne) avant la liste des arguments. Il doit y avoir au moins unfichier-nomsou un argument nom de fichier ; pour tester l’entrée standard, utilisez« - » comme argument nom de fichier.
- -i
- Indique à la commande file de produire des chaînes de caractères de typemime plutôt que celles plus traditionnelles facilement lisibles par unhumain. Ainsi, il pourra dire « text/plain; charset=us-ascii » (textebrut, jeu de caractère us-acii) au lieu de « ASCII text » (texteascii). Pour que cette option fonctionne, file modifie la façon dontil traite les fichiers reconnus par la commande elle-même (comme beaucoupde types de fichiers texte, répertoires, etc.), et utilise un fichier« magique » alternatif. (Voyez la section « FICHIERS » plus bas).
- -k
- Ne pas s’arrêter à la première correspondance, continuer.
- -m liste
- Spécifier une liste de fichiers alternative contenant les nombresmagiques. Cela peut être un unique fichier, ou une liste de fichiersséparés par des deux-points.
- -n
- Forcer le vidage de stdout après l’examen de chaque fichier. Ce n’est utileque lors de l’examen d’une liste de fichiers. Cette option est destinée à être utilisée par des programmes qui veulent rÃ
©ceptionner le type dufichier à partir d’un tube. - -v
- Afficher le numéro de version et se terminer.
- -z
- Essayer de regarder à l’intérieur des fichiers compactés.
- -L
- Suivre les liens symboliques, comme l’option du même nom utilisée parls(1).(sur les systèmes supportant les liens symboliques).
- -s
- Normalement,filen’essaie de lire et de déterminer le type des fichiers présents commearguments que s’ils sont rapportés parstat(2)en tant que fichiers ordinaires. Ceci évite des problèmes, car la lecturede fichiers spéciaux peut avoir des conséquences bizarres. Spécifierl’option-sindique à filede lire également les fichiers arguments qui sont des fichiers spéciaux enmode bloc ou en mode caractère. C’est utile pour déterminer le type dessystèmes de fichiers des données situées dans des partitions de disquebrutes, qui sont des fichiers spéciaux en mode bloc. Cette option indiqueégalement à filede ne pas accorder d’importance à la taille de fichier indiquée parstat(2)puisque, sur certains systèmes, il indique une taille nulle pour lespartitions de disque brutes.
FICHIERS
/usr/share/magic.mgc- liste compilée des nombres magiques par défaut.
/usr/share/magic- liste des nombres magiques par défaut.
/usr/share/magic.mime- liste des nombres magiques par défaut, utilisée pour produire des typesmime quand l’option -i est spécifiée.
ENVIRONNEMENT
La variable d’environnementMAGICpeut être utilisée pour spécifier le nom des fichiers de nombres magiquespar défaut.
VOIR AUSSI
magic(5)- description du format du fichier magique.
strings(1), od(1), hexdump(1)- outils d’examen de fichiers non-textes.
CONFORMITÉ
Ce programme est supposé excéder la définition de l’interface System Vpour FILE(CMD), pour ce qu’on peut comprendre du langage vague qui y estemployé. Son comportement est en grande partie compatible avec le programmeSystem V du même nom. Cette version connaît cependant plus de nombresmagiques, et produira donc des sorties différentes (même si plus précises)dans de nombreux cas.
La seule différence significative entre cette version et celle de System Vest que cette version considère n’importe quelle espace blanche comme undélimiteur, de sorte que les espaces dans les chaînes de caractères demotifs doivent être protégées. Par exemple,
>10 string language impress (données imPRESS)
d’un fichier magique existant devrait être changé en
>10 string language impress (données imPRESS)
En plus, dans cette version, si une chaîne de caractères de motif contientun backslash, il doit être protégé. Par exemple,
0 string egindata document Andrew Toolkit
d’un fichier magique existant devrait être changé en
0 string begindata document Andrew Toolkit
Les versions 3.2 et ultérieures de SunOS de Sun Microsystems incluent unecommandefile(1)dérivée de celle de System V, mais avec quelques extensions. Ma version nediffère que peu de celle de Sun. Elle inclut l’extension de l’opérateur« & » utilisé, par exemple, dans
>16 long&0x7fffffff >0 not stripped
RÉPERTOIRE MAGIQUE
Les entrées du fichier magique ont été rassemblées à partir de sourcesdiverses, principalement via USENET, et ont reçu des contributions dedifférents auteurs. Christos Zoulas (adresse plus bas) collectera lesentrées additionnelles ou corrigées du fichier magique. Une mise à jour desentrées du fichier magique sera distribuée périodiquement.
L’ordre des entrées présentes dans le fichier magique est important. Enfonction du système que vous utilisez, l’ordre dans lequel elles sontplacées peut être incorrect. Si votre ancienne commandefileutilise un fichier magique, gardez quelque part l’ancien fichier magiquepour pouvoir effectuer des comparaisons (renommez-le en/usr/share/magic.orig).
EXEMPLES
$ file file.c file /dev/hdafile.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked, not stripped/dev/hda: block special$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}/dev/hda: x86 boot sector/dev/hda1: Linux/i386 ext2 filesystem/dev/hda2: x86 boot sector/dev/hda3: x86 boot sector, extended partition table/dev/hda4: Linux/i386 ext2 filesystem/dev/hda5: Linux/i386 swap file/dev/hda6: Linux/i386 swap file/dev/hda7: Linux/i386 swap file/dev/hda8: Linux/i386 swap file/dev/hda9: empty/dev/hda10: empty$ file -i file.c file /dev/hdafile.c: text/x-cfile: application/x-executable, dynamically linked (uses shared libs), not stripped/dev/hda: application/x-not-regular-file
HISTORIQUE
Il y a eu une commandefiledans chaque UNIX depuis au moins la version de recherche 6 (page de manueldatée du 16 janvier 1975). La version de System V a introduit un changementmajeur : la liste externe des types de nombres magiques. Ceci aconsidérablement ralenti le programme mais l’a rendu beaucoup plusflexible.
Ce programme, basé sur la version System V, a été écrit par Ian Darwin<ian@darwinsys.com> sans jeter le moindre coup d’oeil à un code tiers.
John Gilmore révisa largement le code, l’améliorant par rapport à lapremière version. Geoff Collyer trouva plusieurs inadéquations, et fournitquelques entrées du fichier magique. Contributions de l’opérateur « & »par Rob McMahon, cudcv@warwick.ac.uk, 1989.
Guy Harris, guy@netapp.com, a effectué de nombreuses modifications depuis1993.
Développement et maintenance principaux depuis 1990 par Christos Zoulas(christos@astron.com).
Modifié par Chris Lowth, chris@lowth.com, en 2000 : support de l’option« -i » pour produire des chaînes de types mime, et utilisation d’unfichier magique et d’une logique interne alternatifs.
Modifié par Eric Fischer (enf@pobox.com), en juillet 2000, pour identifierles codes de caractères et essayer d’identifier le langage des fichiersnon ASCII.
La liste des contributeurs au répertoire « Magdir » (source pour lefichier /etc/magic) est trop longue pour être incluse ici. Vous vousreconnaîtrez ; merci.
COPYRIGHT
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Couvert par lecopyright BSD standard ; voyez le fichier LEGAL.NOTICE dans ladistribution des
sources.
Les fichierstar.hetis_tar.cont été écrits par John Gilmore à partir de son programmetardu domaine public, et ne sont pas couverts par la licence précitée.
BOGUES
Il y a sûrement une meilleure façon d’automatiser la construction dufichier Magique à partir de tout le fouillis contenu dans Magdir. Quelleest-elle Il vaudrait mieux compiler le fichier magique en binaire (via,p.ex.,ndbm(3)ou, mieux encore, en chaînes de caractèresASCIIde longueur fixe pour une utilisation dans des environnements réseauxhétérogènes) pour un démarrage plus rapide. Ensuite, le programmedevrait tourner aussi rapidement que la version 7 du programme du même nom,avec la flexibilité de la version System V.
Fileutilise plusieurs algorithmes qui favorisent la vitesse par rapport à laprécision, et il peut ainsi se tromper sur le contenu des fichiers texte.
Le support des fichiers texte (principalement pour les langages deprogrammation) est simpliste, inefficace, et requiert une recompilationpour une mise à jour.
Il devrait y avoir une clause « else » pour suivre une série de lignes deprolongement.
Le fichier magique et les mots-clés devraient supporter lesexpressions rationnelles. Son utilisation duTAB ASCIIcomme un délimiteur de champ est horrible et rend difficile l’édition desfichiers, mais est acté.
Il serait souhaitable d’autoriser les lettres majuscules dans lesmots-clés pour différencier, par exemple, les commandestroff(1)des macros des pages de manuel. La prise en charge des expressionsrationnelles devrait faciliter cela.
Le programme ne reconnaît pas FORTRAN. Il devrait être capable de lefaire en recherchant quelques mots-clés qui apparaissent indentés parrapport au début de la ligne. La prise en charge des expressionsrationnelles devrait faciliter cela.
La liste de mots-clés deascmagicappartient probablement au fichier Magique. Ceci pourrait être fait enutilisant un mot-clé comme « * » pour la valeur de décalage.
Une autre optimisation pourrait être de réordonner le fichier magique afinque l’on puisse effectuer les tests pour le premier octet, le premier mot,etc., une fois qu’on l’a extrait. Prévenir des conflits dans les entréesdu fichier magique. Éventuellement créer une règle pour que les entréessoient triées sur base du décalage par rapport au début du fichier plutôtque sur la position à l’intérieur du fichier magique.
Le programme devrait fournir un moyen d’estimer le degré de fiabilité d’unesupposition. Nous en arrivons à supprimer des suppositions (p.ex.« From : » comme cinq premiers caractères du fichier) car elles ne sontpas aussi pas aussi bonnes que d’autres (p.ex. « Newsgroups : » vs« Return-Path : »). Néanmoins, si les autres ne fonctionnent pas, ildevrait être possible d’utiliser la première supposition.
Ce programme est plus lent que les commandes file de certainsvendeurs. La récente prise en charge des codes de caractères multiplesaugmente encore cet écart.
Cette page de manuel, en particulier cette section, est trop longue.
DISPONIBILITÉ
Vous pouvez obtenir la dernière version de l’auteur original via FTPanonyme surftp.astron.comdans le répertoire/pub/file/file-X.YY.tar.gz
TRADUCTION
Frédéric Delanoy <delanoy_f at yahoo.com>, 2002.
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- OPTIONS
- FICHIERS
- ENVIRONNEMENT
- VOIR AUSSI
- CONFORMITÉ
- RÉPERTOIRE MAGIQUE
- EXEMPLES
- HISTORIQUE
- COPYRIGHT
- BOGUES
- DISPONIBILITÉ
- TRADUCTION
desc:
FILE
Section: Manuel de l’utilisateur Linux (1)
Updated: 27 avril 2001
IndexReturn to Main Contents
NOM
file – Déterminer le type d’un fichier
keywords: linux, manual, pages, file
[tags]linux, manual, pages, file[/tags]