Name
Datei – Bestimmen Sie den Dateityp
Zusammenfassung
Datei Datei …
file -C
file
Description
Diese Handbuchseite dokumentiert die Version 5.04 des Befehls file.
file testet jedes Argument, um es zu klassifizieren. Es gibt drei Testsätze, die in dieser Reihenfolge ausgeführt werden: Dateisystemtests, magische Tests Undsprachentests. Der erste erfolgreiche Test bewirkt, dass der Dateityp gedruckt wird.
Der gedruckte Typ enthält normalerweise eines der Wörter text (die Datei enthält nur Druckzeichen und einige gängige Steuerzeichen und ist wahrscheinlich sicher auf einem ASCII-Terminal zu lesen), ausführbar (die Datei enthält das Ergebnis der Kompilierung eines Programms in einer für einen UNIXkernel oder einen anderen verständlichen Form) oder Daten, die etwas anderes bedeuten (Daten sind normalerweise ‚binär‘ oder nicht druckbar). Ausnahmen sind bekannte Dateiformate (Core Files, Tararchives), von denen bekannt ist, dass sie Binärdaten enthalten. Achten Sie beim Ändern von Magic-Dateien oder des Programms selbst darauf, diese Schlüsselwörter beizubehalten. Benutzer sind darauf angewiesen, dass in allen lesbaren Dateien in einem Verzeichnis das Wort ‚text‘ gedruckt wird. Machen Sie nicht wie Berkeley und ändern Sie ’shell commands text‘ in ’shell script‘.
Die Dateisystemtests basieren auf der Untersuchung der Rückgabe eines stat(2)-Systemaufrufs. Das Programm prüft, ob die Datei leer ist oder ob es sich um eine spezielle Datei handelt. Alle bekannten Dateitypen, die für das System geeignet sind, auf dem Sie ausgeführt werden (Sockets, symbolische Links oder Named Pipes (FIFOs) auf den Systemen, die sie implementieren), werden intuitiv erkannt, wenn sie in der Systemheaderdatei definiert sind.
Die Magic-Tests werden verwendet, um nach Dateien mit Daten in bestimmten festen Formaten zu suchen. Das kanonische Beispiel hierfür ist eine ausführbare Binärdatei (kompiliertes Programm)a.out-Datei, deren Format in #include <a.out definiert ist.h>
und möglicherweise #include <exec.h>
im Standard-Include-Verzeichnis. Diese Dateien haben eine ‚magische Zahl‘ an einem bestimmten Ort in der Nähe des Anfangs der Datei gespeichert, die das UNIX-Betriebssystem sagt, dass die Datei eine binäre ausführbare Datei ist, und welche von mehreren Arten davon. Das Konzept einer ‚Magie‘ wurde durch Erweiterung auf Datendateien angewendet. Jede Datei mit einem invarianten Bezeichner bei einem kleinen festen Versatz in der Datei kann normalerweise auf diese Weise beschrieben werden. Die Informationen, die diese Dateien identifizieren, werden aus der kompilierten Magic-Datei /usr/share/misc/magic gelesen.mgc oder die Dateien im Verzeichnis /usr/share/misc/magic, wenn die kompilierte Datei nicht existiert. Inaddition, wenn $HOME/.Magic.mgc oder $HOME/.magie existiert, wird es bevorzugt, das System magische Dateien verwendet werden. Wenn /etc/magic existiert, wird es zusammen mit anderen Magic-Dateien verwendet.
Wenn eine Datei keinem der Einträge in der Magic-Datei entspricht, wird geprüft, ob es sich um eine Textdatei zu handeln scheint. ASCII-, ISO-8859-x-, Non-ISO-8-Bitextended-ASCII-Zeichensätze (wie sie auf Macintosh- und IBM-PC-Systemen verwendet werden), UTF-8-codierter Unicode, UTF-16-codierter Unicode und EBCDIC-Zeichensätzekann durch die verschiedenen Bereiche und Sequenzen von Bytes unterschieden werden, die druckbaren Text in jedem Satz darstellen. Wenn eine Datei einen dieser Tests besteht, wird ihr Zeichensatz gemeldet. ASCII-, ISO-8859-x-, UTF-8- und Extended-ASCII-Dateien werden als ‚Text‘ identifiziert, da sie auf fast jedem Terminal größtenteils lesbar sind; UTF-16 und EBCDIC sind nur ‚Zeichendaten‘, da sie zwar Text enthalten, aber übersetzt werden müssen, bevor sie gelesen werden können. Darüber hinaus wird file versuchen, andere Eigenschaften von Textdateien zu bestimmen. Wenn die Zeilen einer Datei mit CR, CRLF oder NEL anstelle des Unix-Standards LF beendet werden, wird dies gemeldet. Dateien, die eingebettete Escape-Sequenzen oder Overstriking enthalten, werden ebenfalls identifiziert.
Sobald file den Zeichensatz bestimmt hat, der in einer Textdatei verwendet wird, wird versucht zu bestimmen, in welcher Sprache die Datei geschrieben wird. Die Languagetests suchen nach bestimmten Zeichenfolgen (vgl. #include <Namen.h>
), die überall in den ersten Blöcken einer Datei erscheinen kann. Beispielsweise gibt das Schlüsselwort .br an, dass die Datei höchstwahrscheinlich eine troff (1) -Eingabedatei ist, genau wie das Schlüsselwort struct ein C-Programm angibt. Diese Tests sind weniger zuverlässig als die beiden vorherigen Gruppen, daher werden sie zuletzt durchgeführt. Die languagetest-Routinen testen auch auf verschiedene Arten (z. B. tar (1) -Archive).
Jede Datei, die nicht als in einem der oben aufgeführten Zeichensätze geschrieben identifiziert werden kann, wird einfach als ‚Daten‘ bezeichnet.
Optionen
-b, --brief
Den Ausgabezeilen werden keine Dateinamen vorangestellt (Kurzmodus).
-C, –compile
Schreibe eine Magie.mgc-Ausgabedatei, die eine vorab analysierte Version der Magic-Datei oder des Magic-Verzeichnisses enthält.
-c, –checking-printout
Bewirkt einen Prüfausdruck der analysierten Form der Magic-Datei. Dies wird normalerweise in Verbindung mit dem Flag -m verwendet, um eine neue Magic-Datei vor der Installation zu debuggen.
-e, –exclude testname
Schließen Sie den in testname genannten Test von der Liste der Tests aus, die zur Bestimmung des Dateityps durchgeführt wurden. Gültige Testnamen sind:
apptype
EMX Anwendungstyp (nur auf EMX).
text‘ Verschiedene Arten von Textdateien (dieser Test wird versuchen, die Textcodierung zu erraten, unabhängig von der Einstellung der Option ‚encoding‘).
encoding
Verschiedene Textcodierungen für Soft Magic Tests.
tokens‘ Sucht nach bekannten Tokens in Textdateien.
cdf‘ Gibt Details von zusammengesetzten Dokumentdateien aus.
compress
Sucht nach komprimierten Dateien und schaut hinein.
elf‘ Gibt die Details der ELF-Datei aus.
soft‘ Konsultiert magische Dateien.
tar‘ Untersucht TAR-Dateien.
-F, –separator separator
Verwenden Sie die angegebene Zeichenfolge als Trennzeichen zwischen dem Dateinamen und der Datei Ergebnis zurückgegeben. Der Standardwert ist ‚:‘.
-f, –files-from namefile
Lesen Sie die Namen der zu untersuchenden Dateien aus Namefile (eine pro Zeile) vor der Argumentliste. Entweder namefile oder mindestens ein filenameargument muss vorhanden sein; Um die Standardeingabe zu testen, verwenden Sie ‚-‚ als Dateinamenargument.
-h, –no-dereference
Option bewirkt, dass Symlinks nicht gefolgt werden (auf Systemen, die symbolische Links unterstützen). Dies ist der Standardwert, wenn die Umgebungsvariable POSIXLY_CORRECT nicht definiert ist.
-i, –mime
Bewirkt, dass der Befehl file Zeichenfolgen vom MIME-Typ ausgibt und nicht die traditionelleren, für Menschen lesbaren. So kann es sagen ‚text / plain; charset = us-ascii‘ statt ‚ASCII text‘. Damit diese Option funktioniert, ändert file die Art und Weise, wie Dateien behandelt werden, die vom Befehl selbst erkannt werden (z. B. viele Textdateitypen, Verzeichnisse usw.), und verwendet eine alternative magische Datei. (Siehe Abschnitt DATEIEN unten).
–mime-type, –mime-encoding
Wie -i, gibt aber nur die angegebenen Elemente aus.
-L, –dereference
Option bewirkt, dass Symlinks gefolgt werden, wie die like-named Option in ls(1) (auf Systemen, die symbolische Links unterstützen). Dies ist der Standardwert, wenn die Umgebungsvariable POSIXLY_CORRECT definiert ist.
-m, –magic-file magicfiles
Geben Sie eine alternative Liste von Dateien und Verzeichnissen an, die Magic enthalten. Dies kann ein einzelnes Element oder eine durch Doppelpunkte getrennte Liste sein. Wenn eine kompilierte Magic-Datei neben einer Datei oder einem Verzeichnis gefunden wird, wird sie stattdessen verwendet.
-N, –no-pad
Füllen Sie Dateinamen nicht so auf, dass sie in der Ausgabe ausgerichtet sind.
-n, –no-buffer
Erzwinge, dass stdout nach dem Überprüfen jeder Datei geleert wird. Dies ist nur nützlich, wenn Sie eine Liste von Dateien überprüfen. Es soll von Programmen verwendet werden, die filetypeoutput aus einer Pipe wollen.
-p, –preserve-date
Versuchen Sie auf Systemen, die utime(2) oder utimes(2) unterstützen, die Zugriffszeit der analysierten Dateien beizubehalten, um so zu tun, als würde diese Datei sie nie lesen.
-r, –raw
Übersetzen Sie keine nicht druckbaren Zeichen in \ooo. Die Datei übersetzt nicht druckbare Zeichen in ihre oktale Darstellung.
-s, –special-files
Normalerweise versucht file nur, die Art der Argumentdateien zu lesen und zu bestimmen, von denen stat(2) berichtet, dass es sich um gewöhnliche Dateien handelt. Dies verhindert Probleme, weilDas Lesen spezieller Dateien kann besondere Konsequenzen haben. Die Angabe der Option -s bewirkt, dass file auch Argumentdateien liest, die Block- oder Zeichenspezialdateien sind. Dies ist nützlich, um die Dateisystemtypen der Daten in RAW-Festplattenpartitionen zu bestimmen, die keine speziellen Dateien sind. Diese Option bewirkt auch, dass file die von stat(2) gemeldete Dateigröße ignoriert, da sie auf einigen Systemen eine Größe von Null für rohe Festplattenpartitionen meldet.
-v, –version
Drucken Sie die Version des Programms und beenden.
-z, –uncompress
Versuchen Sie, in komprimierte Dateien zu suchen.
–help
Eine Hilfemeldung drucken und beenden.
Dateien
/usr/share/misc/magic.mgc
Standardmäßig kompilierte Liste von Dateien.
/usr/share/misc/magic‘ Verzeichnis mit Standard-Magic-Dateien.
Environment
Die Umgebungsvariable MAGIC kann verwendet werden, um den standardmäßigen Magic-Dateinamen festzulegen. Wenn diese Variable gesetzt ist, wird file nicht versuchen, $HOME / zu öffnen.Magic. datei hinzugefügt ‚.mgc‘ auf den Wert dieser Variablen entsprechend. Die Umgebungsvariable POSIXLY_CORRECT steuert (auf Systemen, die symbolische Links unterstützen), ob die Datei versucht, Symlinks zu folgen oder nicht. Wenn gesetzt, dann folgt file symlink , sonst nicht. Dies wird auch durch die Optionen -L und -h gesteuert.
Siehe auch
magic(5), strings(1), od(1), hexdump(1,) file(1posix)
Standards Conformance
Es wird angenommen, dass dieses Programm die System-V-Schnittstellendefinition von FILE(CMD) überschreitet, soweit dies anhand der darin enthaltenen vagen Sprache festgestellt werden kann.Sein Verhalten ist größtenteils mit dem gleichnamigen System V-Programm kompatibel. Diese Version kennt jedoch mehr Magie, so dass sie in vielen Fällen eine andere (wenn auch genauere) Ausgabe erzeugt.
Der einzige signifikante Unterschied zwischen dieser Version und System V besteht darin, dass diese Version jeden Leerraum als Trennzeichen behandelt, sodass Leerzeichen in Patternstrings maskiert werden müssen. Beispielsweise müsste
>10 string language impress (imPRESS data)
in einer vorhandenen Magic-Datei in
>10 string language\ impress (imPRESS data)
geändert werden. Zum Beispiel müsste
0 string \begindata Andrew Toolkit document
in einer vorhandenen Magic-Datei in
0 string \\begindata Andrew Toolkit document
SunOS releases 3 geändert werden.2 und später von Sun Microsystems enthalten einen vom System V abgeleiteten Dateibefehl, jedoch mit einigen Erweiterungen. Meine Version unterscheidet sich von Sun nur in geringfügiger Weise. Es enthält die Erweiterung des Operators ‚&‘, der beispielsweise als
>16 long&0x7fffffff >0 not stripped
Magic Directory
verwendet wird Die Magic-Dateieinträge wurden aus verschiedenen Quellen gesammelt, hauptsächlich aus dem USENET, und von verschiedenen Autoren beigesteuert. Christos Zoulas (Adresse unten) wirdsammle zusätzliche oder korrigierte Magic-Dateieinträge. Eine Konsolidierung der Magic-Dateieinträge wird regelmäßig verteilt.
Die Reihenfolge der Einträge in der Magic-Datei ist von Bedeutung. Je nachdem, welches System Sie verwenden, kann die Reihenfolge, in der sie zusammengestellt werden, falsch sein. Wenn Ihr alter Dateibefehl eine magische Datei verwendet, bewahren Sie die alte magische Datei zu Vergleichszwecken auf (benennen Sie sie in / usr / share / misc / magic um.orig.
Beispiele
$ file file.c file /dev/{wd0a,hda}file.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamisch verknüpft (verwendet gemeinsam genutzte Bibliotheken), entfernt
/dev/wd0a: Block Spezial (0/0)
/dev/hda: Block Spezial (3/0)
$ file -s /dev/wd0{b,d}
/dev/wd0b: Daten
/dev/wd0d: x86-Bootsektor
Verlauf
In jedem UNIX gibt es seit mindestens Version 4 einen Dateibefehl (Manpage vom November 1973). Die System V-Version hat eine eingeführtbedeutende große Änderung: die externe Liste der magischen Typen. Dies verlangsamte das Programm etwas, machte es aber viel flexibler.
Dieses Programm, basierend auf der System V-Version, wurde von Ian Darwin geschrieben <[email protected] > ohne auf den Quellcode eines anderen zu schauen.
John Gilmore überarbeitete den Code umfassend und machte ihn besser als die erste Version. Geoff Collyer fand einige Unzulänglichkeiten und lieferte einige magische Dateieinträge. Beiträge des Operators ‚&‘ von Rob McMahon, [email protected] , 1989.
Hans-Jürgen Müller, [email protected] , machte viele Änderungen von 1993 bis zur Gegenwart.
Primäre Entwicklung und Wartung von 1990 bis heute von Christos Zoulas ([email protected] ).
Geändert von Chris Lowth, [email protected] , 2000: Behandeln Sie die Option -i, um MIME-Strings mit einer alternativen Magic-Datei und interner Logik auszugeben.
Geändert von Eric Fischer ([email protected] ), Juli, 2000, um Zeichencodes zu identifizieren und zu versuchen, die Sprachen von Nicht-ASCII-Dateien zu identifizieren.
Geändert von Reuben Thomas ([email protected] ), 2007 bis 2008, zur Verbesserung der MIME-Unterstützung und verschmelzen MIME und Nicht-MIME Magie, Unterstützung Verzeichnisse sowie Dateien ofmagic, gelten viele Bugfixes und Verbesserung der Build-system.
Die Liste der Mitwirkenden am ‚Magic‘-Verzeichnis (Magic-Dateien) ist zu lang, um sie hier aufzunehmen. Du weißt, wer du bist, danke. Viele Mitwirkende sind in den Quelldateien aufgeführt.
Rechtlicher Hinweis
Copyright © Ian F. Darwin, Toronto, Kanada, 1986-1999. Abgedeckt durch den Standard Berkeley Software Distribution Copyright; siehe die Datei LEGAL.HINWEIS in thesource verteilung.
Die Dateien tar.h und is_tar.c wurden von John Gilmore aus seinem gemeinfreien tar (1) -Programm geschrieben und fallen nicht unter die obige Lizenz.
Fehler
Es muss eine bessere Möglichkeit geben, die Erstellung der Magic-Datei aus allen Glops in Magdir zu automatisieren. Was ist das?
Datei verwendet mehrere Algorithmen, die Geschwindigkeit über Genauigkeit begünstigen, so kann es über den Inhalt von Textdateien in die Irre geführt werden.
Die Unterstützung für Textdateien (hauptsächlich für Programmiersprachen) ist simpel, ineffizient und erfordert eine Neukompilierung, um sie zu aktualisieren.
Die Liste der Schlüsselwörter in ascmagic gehört wahrscheinlich in die Magic-Datei. Dies könnte mit einem Schlüsselwort wie ‚*‘ für den Offset-Wert erfolgen.
Klagen Sie über Konflikte in den Magic-Dateieinträgen. Machen Sie eine Regel, dass die magischen Einträge basierend auf dem Dateiversatz und nicht auf der Position innerhalb der magischen Datei sortiert werden?
Diese Handbuchseite und insbesondere dieser Abschnitt sind zu lang.
Rückgabecode
file gibt bei Erfolg 0 und bei Fehler ungleich Null zurück.
Wenn die vom Dateioperanden benannte Datei nicht existiert, nicht gelesen werden kann oder der Typ der vom Dateioperanden benannten Datei nicht bestimmt werden kann, wird dies nicht als Fehler angesehen, der den Exit-Status beeinflusst.
Verfügbarkeit
Sie können die neueste Version des Originalautors über anonymes FTP auf ftp.astron.com im Verzeichnis /pub/file/file-X.YZ.Teer.gz
BSD 9. Oktober 2008 BSD