FILE(1) General Commands Manual FILE(1) NOM file - Determiner le type d'un fichier SYNOPSIS file [-bcdEhiklLNnprsSvzZ0] [--apple] [--exclude-quiet] [--extension] [--mime-encoding] [--mime-type] [-e nom_test] [-F separateur] [-f fichier_de_noms] [-m fichiers_magiques] [-P nom=valeur] file ... file -C [-m fichiers_magiques] file [--help] DESCRIPTION Cette page de manuel documente la version 5.45 de la commande file. file teste chaque argument dans le but de les classer. Il y a trois ensembles de tests qui se deroulent dans cet ordre : tests du systeme de fichiers, tests magiques et tests de langage. Le premier test qui reussit provoque l'affichage du type de fichier. Le type affiche contiendra generalement un des mots text (le fichier ne contient que des caracteres affichables et quelques caracteres de controle courants et peut probablement etre lu sur un terminal ASCII) de facon sure, executable (le fichier contient le resultat de la compilation d'un programme sous une forme comprehensible pour des noyaux UNIX ou autres) ou data signifiant tout le reste (les donnees sont generalement "binaire" ou non-affichable). Les exceptions sont des formats de fichiers bien connus (fichiers core, archives tar) qui sont connus pour contenir des donnees binaires. Lors de la modification des fichiers magiques ou du programme lui-meme, assurez-vous de preserver ces mots cles. Les utilisateurs comptent sur le fait que tous les fichiers lisibles d'un repertoire ont le mot "text" affiche. Ne faites pas comme a fait Berkeley en changeant "shell commands text" en "shell script". Les tests du systeme de fichiers sont bases sur l'examen du retour d'un appel systeme stat(2). Le programme verifie si le fichier est vide, ou si c'est un type de fichier special. Tous les types de fichiers connus appropries au systeme sur lequel vous travaillez (sockets, liens symboliques ou tubes nommes (FIFO) sur les systemes qui les implementent) sont reconnus de facon intuitive s'ils sont definis dans le fichier d'en- tete du systeme . Les tests << magiques >> sont utilises pour rechercher des fichiers contenant des donnees dans des formats particuliers. L'exemple canonique de cela est un fichier executable binaire (programme compile), dont le format est defini dans , et peut-etre dans dans le repertoire include standard. Ces fichiers contiennent un "nombre magique" stocke a un emplacement particulier pres du debut du fichier qui dit au systeme d'exploitation UNIX que le fichier est un executable binaire et lequel parmi les nombreux types. Le concept de "nombre magique" a ete applique par extension aux fichiers de donnees. Tout fichier contenant un identifiant invariable a un petit decalage fixe dans le fichier peut generalement etre decrit de cette maniere. L'information identifiant ces fichiers est lue a partir du fichier magique compile /usr/share/file/misc/magic.mgc ou des fichiers presents dans le repertoire /usr/share/file/misc/magic si le fichier compile n'existe pas. De plus, si ou $HOME/.magic existent, ils seront utilises de preference aux fichiers magiques du systeme. Si un fichier ne correspond a aucune entrees du fichier magique, il est examine afin de voir s'il semble etre un fichier texte. Les jeux de caracteres ASCII, ISO-8859, ASCII-etendu 8 bits non ISO (tels ceux utilises sur Macintosh et les systemes de PC IBM), Unicode encodes en UTF-8 ou en UTF-16 et les jeux de caracteres EBCDIC peuvent etre differencies par les differents intervalles et sequences d'octets qui constituent le texte imprimable dans chaque jeu. Si un fichier passe avec succes l'un de ces tests, son jeu de caracteres est signale. Les fichiers ASCII, ISO-8859-x, UTF-8 et ASCII-etendu sont identifies comme "text" (texte), car ils sont pour la plupart lisibles sur pratiquement n'importe quel terminal ; UTF-16 et EBCDIC sont seulement des "character data" (donnees caracteres), car, meme contenant du texte, celui-ci necessite une traduction avant de pouvoir etre lu. De plus, file essaiera de determiner d'autres caracteristiques des fichiers type texte. Si les lignes d'un fichier sont terminees par CR, CRLF ou NEL au lieu du standard Unix LF, ce sera signale. Les fichiers qui contiennent des sequences d'echappement integrees ou de la surimpression seront egalement identifies. Une fois que file a determine le jeu de caracteres utilise dans un fichier de type texte, il essaiera de determiner dans quel langage le fichier est ecrit. Les tests de langage cherchent des chaines particulieres (cf. ) qui peuvent apparaitre n'importe ou dans les quelques premiers blocs d'un fichier. Par exemple, le mot-cle .br indique que le fichier est tres probablement un fichier d'entree troff(1), comme le mot-cle struct indique un programme en C. Ces tests sont moins fiables que les deux groupes precedents, ils sont donc realises en dernier. Les routines de test de langage testent egalement quelques autres types divers (comme les archives tar(1) ou les fichiers JSON). Tout fichier qui ne peut pas etre identifie comme ayant ete ecrit dans un des jeux de caracteres listes plus haut est simplement considere comme "data" (donnees). OPTIONS --apple Faire en sorte que la commande file affiche le type de fichier et le code createur tel qu'utilise par les vieilles versions de MacOS. Le code consiste en huit lettres, la premiere decrivant le type de fichier, la derniere le createur. Cette option ne fonctionne bien qu'avec les formats de fichiers ou la sortie de style apple est definie. -b, --brief Ne pas faire preceder les lignes de sortie par les noms de fichiers (mode bref). -C, --compile Ecrire un fichier de sortie magic.mgc qui contient une version pre-analysee du fichier ou du repertoire magique. -c, --checking-printout Provoquer un affichage pour verification de la forme analysee du fichier magique. Cela est habituellement utilise en conjonction avec l'option -m pour deboguer un nouveau fichier magique avant de l'installer. -d Afficher les informations de debogage interne vers stderr. -E Pour les erreurs de systeme de fichiers (fichier non trouve, etc), au lieu de traiter l'erreur comme une sortie normale comme POSIX l'exige et de continuer, emettre un message d'erreur et quitter. -e, --exclude nom_test Exclure le test nomme dans nom_test de la liste des tests pour determiner le type de fichier. Les noms de test valables sont : apptype Application de type EMX (seulement sur EMX). ascii Differents types de fichiers texte (ce test essaiera de deviner l'encodage du texte, sans respecter les reglages de l'option `encoding'). encoding Differents encodages de textes pour des tests magiques << doux >>. tokens Ignore pour la retrocompatibilite. cdf Affiche les details des fichiers de documents composes (Compound Documents Files). compress Chercher et regarder dans des fichiers compresses. csv Verifie les fichiers de valeurs separees par des virgules. elf Afficher les details de fichier ELF, a condition que les tests magiques doux soient actives et que le magique elf soit trouve. json Examiner les fichiers JSON (RFC-7159) en les analysant pour conformite. soft Consulter les fichiers magiques. simh Examine les fichiers d'une bande SIMH. tar Examiner les fichiers tar en verifiant la somme de controle de 512 octets de l'en-tete tar. L'exclusion de ce test peut fournir plus de contenu detaille en utilisant la methode magique douce (soft). text Un synonyme pour `ascii'. --exclude-quiet Comme --exclude, mais ignorer les tests que file ne reconnait pas. Cela est destine a la compatibilite avec les anciennes versions de file. --extension Afficher sous forme de liste separee par des barres obliques les extensions valables pour le type de fichier trouve. -F, --separator separateur Utiliser les chaines specifiees comme separateur entre le nom de fichier et le resultat sur le fichier renvoyes. Par defaut `:'. -f, --files-from fichier_de_noms Lire le nom des fichiers a examiner a partir du fichier_de_noms (un par ligne) avant la liste des arguments. Un fichier_de_noms ou au moins un argument de nom de fichier doit etre present ; pour tester l'entree standard, utilisez `-' comme argument de nom de fichier. Veuillez noter que le fichier_de_noms est deplie et que les noms de fichiers inclus sont traites lorsque cette option est rencontree et cela avant tout autre traitement d'options. Cela permet de traiter plusieurs listes de fichiers avec differents arguments de ligne de commande avec la meme invocation file. Cependant, si vous voulez definir le delimiteur, vous devez le faire avant de specifier la liste de fichiers, comme : "-F @ -f fichier_de_noms", au lieu de : "-f fichier_de_noms -F @". -h, --no-dereference Cette option fait que les liens symboliques ne sont pas suivis (pour les systemes qui gerent les liens symboliques). Il s'agit du comportement par defaut si la variable d'environnement POSIXLY_CORRECT n'est pas definie. -i, --mime Faire en sorte que la commande file affiche des chaines de type mime plutot que celles plus traditionnelles facilement lisibles par un humain. Il peut dire par exemple `text/plain; charset=us-ascii' au lieu de "ASCII text". --mime-type, --mime-encoding Comme -i, mais n'afficher que le(s) element(s) specifie(s). -k, --keep-going Ne pas s'arreter a la premiere correspondance, mais continuer. Les correspondances subsequentes seront prefixees par la chaine `\012- '. (si vous voulez une nouvelle ligne, consultez l'option -r). Le motif magique avec la plus grande valeur (voir l'option -l) vient en premier. -l, --list Afficher une liste de motifs et leur valeur triee par ordre decroissant de valeur de magic(5) qui est utilisee pour la correspondance (voir aussi l'option -k). -L, --dereference Cette option fait que les liens symboliques sont suivis, comme l'option du meme nom dans ls(1) (sur les systemes qui prennent en charge les liens symboliques). C'est le comportement par defaut si la variable d'environnement POSIXLY_CORRECT est definie. -m, --magic-file magicfiles Indiquer une liste alternative de fichiers et repertoires contenant les nombres magiques. Cela peut etre un simple item ou une liste de fichiers separee par des deux-points (:). Si un fichier magique compile est trouve en meme temps qu'un fichier ou un repertoire, il sera utilise a la place. -N, --no-pad Ne pas remplir les noms de fichiers pour qu'ils soient alignes dans la sortie. -n, --no-buffer Forcer le vidage de stdout apres l'examen de chaque fichier. Cela n'est utile que lors de l'examen d'une liste de fichiers. Cela est destine a etre etre utilise par des programmes qui veulent recuperer le type de fichier depuis un tube. -p, --preserve-date Sur les systemes qui prennent en charge utime(3) ou utimes(2), tenter de preserver la date d'acces des fichiers analyses, pour faire semblant que file ne les a jamais lus. -P, --parameter name=value Definir diverses limites de parametres. Nom Valeur_par_defaut Explication bytes 1M nombre maximal d'octets a lire depuis le fichier elf_notes 256 maximum de notes ELF traitees elf_phnum 2K nombre maximal de sections de programme ELF traitees elf_shnum 32K maximum de sections ELF traitees elf_shsize 128MB maximum de sections ELF traitees encoding 65K nombre maximal d'octets a analyser pour l'evaluation de l'encodage indir 50 limite de recursion pour la magie indirecte name 50 limite du nombre d'utilisations pour le nom/l'utilisation magique regex 8K limite de longueur pour les recherches regex -r, --raw Ne pas traduire les caracteres non-imprimables en \ooo. Normalement file traduit les caracteres non-imprimables dans leur representation octale. -s, --special-files Normalement, file tente seulement de lire et de determiner le type de fichiers passes en argument que stat(2) rapporte etre des fichiers ordinaires. Cela evite les problemes, car lire des fichiers speciaux peut avoir des consequences particulieres. Indiquer l'option -s fait en sorte que file lise aussi les fichiers d'arguments qui sont des fichiers speciaux en mode bloc ou caractere. C'est utile pour determiner le type du systeme de fichiers des donnees dans des partitions de disque brutes qui sont des fichiers speciaux en mode bloc. Cette option fait aussi en sorte que file ne tienne pas compte de la taille de fichier telle qu'elle est indiquee par stat(2), puisque, sur certains systemes, stat(2) indique une taille nulle pour les partitions du disque brutes. -S, --no-sandbox Sur les systemes ou libseccomp (https://github.com/seccomp/libseccomp) est disponible, l'option -S desactive le bac a sable qui est active par defaut. Cette option est necessaire a file pour executer des programmes de decompression externes, par exemple dans le cas ou l'option -z est indiquee et ou les decompresseurs integres ne sont pas disponibles. Sur les systemes ou le bac a sable n'est pas disponible, cette option n'a aucun effet. -v, --version Afficher la version du programme et quitter. -z, --uncompress Essayer de regarder dans les fichiers compresses. -Z, --uncompress-noreport Essayer de regarder dans les fichiers compresses, mais n'afficher des informations que sur le contenu, pas sur la compression. -0, --print0 Ajouter un caractere NULL `\0' apres la fin du nom de fichier. Pratique pour couper ( cut(1)) la sortie. Cela n'affecte pas le separateur, qui est toujours affiche. Si cette option est repetee plus d'une fois, alors file affiche juste le nom de fichier suivi d'un zero suivi de la description (ou ERROR: text) suivi par un second zero pour chaque entree. --help Afficher un message d'aide puis quitter. ENVIRONNEMENT La variable d'environnement MAGIC peut etre utilisee pour specifier le nom du fichier de nombres magiques par defaut. Si cette variable est definie, alors file n'essaiera pas d'ouvrir $HOME/.magic. Le cas echeant, file ajoute ".mgc" a la valeur de cette variable de maniere appropriee. La variable d'environnement POSIXLY_CORRECT controle (sur les systemes qui gerent les liens symboliques) si file essaie de suivre les liens symboliques ou non. Si elle est definie, alors file suit les liens symboliques, autrement il ne le fait pas. Ce comportement est aussi controle par les options -L et -h. FICHIERS /usr/share/file/misc/magic.mgc Liste compilee des nombres magiques par defaut. /usr/share/file/misc/magic Repertoire contenant les fichiers magiques par defaut. CODE DE RETOUR file quittera avec 0 si l'operation a reussi ou >0 si une erreur a ete rencontree. Les erreurs suivantes provoquent des messages de diagnostic, mais n'affectent pas le code de retour du programme (comme requis par POSIX), a moins que -E ne soit indiquee : o Un fichier n'a pas ete trouve o Il n'y a pas de permission pour lire un fichier o Le type de fichier ne peut pas etre determine EXEMPLES $ file file.c file /dev/{wd0a,hda} file.c: C program text file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped /dev/wd0a: block special (0/0) /dev/hda: block special (3/0) $ file -s /dev/wd0{b,d} /dev/wd0b: data /dev/wd0d: x86 boot sector $ 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/{wd0a,hda} file.c: text/x-c file: application/x-executable /dev/hda: application/x-not-regular-file /dev/wd0a: application/x-not-regular-file VOIR AUSSI hexdump(1), od(1), strings(1), magic(5) CONFORMITE AUX STANDARDS Ce programme est suppose depasser la definition de l'interface System V de FILE(CMD), pour autant qu'on puisse le determiner a partir du langage vague qu'il contient. Son comportement est en grande partie compatible avec le programme System V du meme nom. Cette version connait cependant plus de nombres magiques et produira donc des sorties differentes (bien que plus precises) dans de nombreux cas. La difference significative entre cette version et celle de System V est que cette version traite tout espace blanche comme un delimiteur, donc les espaces dans les chaines de motif doivent etre protegees. Par exemple, >10 string language impress (imPRESS data) dans un fichier de nombres magiques existant devrait etre change en >10 string language\ impress (imPRESS data) De plus, dans cette version, si une chaine de motif contient une barre oblique inversee ( \[u00A0]), elle doit etre protegee. Par exemple 0 string \begindata Andrew Toolkit document dans un fichier de nombres magiques existant devrait etre change en 0 string \\begindata Andrew Toolkit document Les editions 3.2 et ulterieures de SunOS de Sun Microsystems incluent une commande file derivee de celle de System V, mais avec quelques extensions. Cette version differe de celle de Sun seulement sur des points mineurs. Elle inclut l'utilisation de l'extension de l'operateur par exemple, >16 long&0x7fffffff >0 not stripped SECURITE Sur les systemes ou libseccomp (https://github.com/seccomp/libseccomp) est disponible, file permet de limiter les appels systeme a ceux qui sont necessaires au fonctionnement du programme. L'application de cette limitation n'apporte aucun avantage en matiere de securite lorsqu'il est demande a file de decompresser des fichiers d'entree en executant des programmes externes avec l'option -z. Pour activer l'execution de decompresseurs externes, il est necessaire de desactiver le bac a sable en utilisant l'option -S. REPERTOIRE MAGIQUE Les entrees du fichier magique ont ete recueillies a partir de diverses sources, principalement USENET, et ont ete fournies par divers auteurs. Christos Zoulas (adresse ci-dessous) collectera les entrees additionnelles ou corrigees du fichier magique. Une mise a jour des entrees du fichier magique sera distribuee periodiquement. L'ordre des entrees presentes dans le fichier magique est important. Suivant le systeme utilise, l'ordre dans lequel elles sont rangees peut etre incorrect. Si votre ancienne commande file utilise un fichier magique, gardez le vieux fichier magique a disposition a des fins de comparaison (renommez-le en /usr/share/file/misc/magic.orig). HISTORIQUE Il y a eu une commande file dans chaque UNIX depuis au moins Research Version 4 (la page de manuel date de novembre 1973). La version System V introduit un changement majeur significatif : la liste externe de types magiques. Cela a legerement ralenti le programme mais l'a rendu beaucoup plus flexible. Ce programme, base sur la version de System V, a ete ecrit par Ian Darwin sans regarder aucun code source de quelqu'un d'autre. John Gilmore a revise le code intensivement, l'ameliorant par rapport a la premiere version. Geoff Collyer a trouve plusieurs incoherences et fourni quelques entrees de fichiers magiques. Les contributions de l'operateur `&' ont ete faite par Rob McMahon , 1989. Guy Harris, , a effectue de nombreuses modifications de 1993 a nos jours. Le developpement initial et la maintenance de 1990 a aujourd'hui est de Christos Zoulas . Modifie par Chris Lowth , 2000 : gestion de l'option -i pour afficher les chaines de type mime, en utilisant un fichier magique et une logique interne alternatifs. Modifie par Eric Fischer , juillet 2000, pour identifier les codes de caracteres et essayer d'identifier les langages des fichiers non-ASCII. Modifie par Reuben Thomas , 2007-2011, pour ameliorer la prise en charge de MIME, fusionner la magie MIME et non MIME, gerer les repertoires ainsi que les fichiers de nombres magiques, appliquer de nombreuses corrections de bogues, mettre a jour et corriger beaucoup de nombres magiques, ameliorer la construction du systeme, ameliorer la documentation et reecrire les liaisons Python en Python pur. La liste des contributeurs au repertoire `magic' (fichiers magiques) est trop longue pour l'inclure ici. Vous vous reconnaitrez ; merci a vous. Beaucoup de contributeurs sont listes dans les fichiers source. NOTICE LEGALE Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Couvert par le copyright Berkeley Software Distribution standard ; consulter le fichier COPYING dans la distribution des sources. Les fichiers tar.h et is_tar.c ont ete ecrits par John Gilmore a partir de son programme du domaine public, et ne sont pas couverts par la licence ci-dessus. BOGUES Merci de rapporter les bogues et d'envoyer les patchs au traqueur de bogue a https://bugs.astron.com/ ou a la liste de diffusion a (visitez d'abord https://mailman.astron.com/mailman/listinfo/file pour vous inscrire). A FAIRE Corriger la sortie afin que les tests pour les drapeaux MIME et APPLE ne soient pas partout necessaires et que la sortie reelle ne soit faite qu'a un seul endroit. Cela a besoin d'etre elabore. Suggestion : placer les sorties possibles dans une liste, puis choisir la derniere valeur (la plus specifique, on espere) a la fin, ou utiliser celle par defaut si la liste est vide. Cela ne doit pas ralentir l'evaluation. La manipulation de MAGIC_CONTINUE et l'affichage \012 - entre les entrees est maladroit et complique ; a remanier et centraliser. Certaines logiques d'encodage sont codees en dur dans encoding.c et pourraient etre deplacees dans les fichiers magiques si nous avions une annotation !:charset. Continuez de corriger tous les bogues de nombres magiques. Consultez le systeme de suivi de bogues de Debian pour une bonne source d'information. Stocker les chaines de longueur quelconque, par exemple pour les motifs %s, pour qu'elles puissent etre affichees. Corrige le bogue Debian no 271672. Cela peut se faire en allouant des chaines dans un pool de chaines, en stockant le pool de chaines a la fin du fichier magique et en convertissant tous les pointeurs de chaines en decalages relatifs au pool de chaines. Ajouter la syntaxe pour les decalages relatifs apres le niveau actuel (Debian bug no 466037). Faire un fichier -ki work, c'est-a-dire donner plusieurs types MIME. Ajouter une bibliotheque zip pour jeter un oeil dans les documents Office2007 afin d'afficher plus de details sur leur contenu. Ajouter une option pour afficher les URL pour les sources des descriptions de fichiers. Combiner les scripts de recherches et ajouter une methode pour mapper les noms d'executables en type MIME (par exemple, avoir une valeur magique pour !:mime qui fasse que la chaine resultante soit recherchee dans une table). Cela devrait empecher l'ajout de la meme magie repetitivement pour chaque nouvel interpreteur de hash-bang. Lorsqu'un descripteur de fichier est disponible, nous pouvons passer et ajuster la memoire tampon a la place de la gestion de la memoire tampon que nous faisons actuellement. Arranger "name" et "use" pour verifier la coherence a la compilation (dupliquer "name", "use" pointant vers "name" indefini). Rendre "name" / "use" plus efficaces en gardant une liste classee de noms. Le cas special ^ pour inverser le boutisme dans l'analyseur syntaxique afin qu'il ne soit pas necessaire de le proteger, et le documenter. Si les decalages indiques en interne dans le fichier depassent la taille du tampon (la variable HOWMANY dans fichier.h), alors nous ne cherchons pas a atteindre ce decalage et nous abandonnons. Il serait preferable que la gestion des tampons se fasse quand le descripteur de fichier est disponible pour pouvoir chercher autour du fichier. On doit neanmoins etre attentif, car cela peut avoir un impact en matiere de performance et donc de securite, car il est possible de ralentir les choses en cherchant de facon repetee. Il y a maintenant une prise en charge pour garder des tampons separes et avoir des decalages a partir de la fin du fichier, mais la gestion du tampon interne necessite encore un remaniement. DISPONIBILITE Vous pouvez obtenir la derniere version de l'auteur original par FTP anonyme sur ftp.astron.com dans le repertoire /pub/file/file-X.YZ.tar.gz. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Frederic Delanoy et bubu Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3: https://www.gnu.org/licenses/gpl-3.0.html concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a debian-l10n-french@lists.debian.org Linux 6.8.2-arch2-1 21 mai 2023 Linux 6.8.2-arch2-1