Datei (Befehl)
Entwickler (en) | AT & T Bell Laboratories |
---|---|
Erstveröffentlichung | 1973 als Teil von UNIX Research Version 4; 1986 Open-Source-Neuauflagen |
Repository | Github |
Geschrieben in | C |
Betriebssystem | Unix, Unix-artig, Plan 9, Ibm i |
Plattform | Plattformübergreifend |
Typ | Dateityp Detektor |
Lizenz | BSD -Lizenz, CDDL Plan 9: MIT -Lizenz |
Webseite | Darwinsys |
Das Datei
Befehl ist ein Standard Programm von Unix und Unix-artig Betriebssysteme zum Erkennen der Art der in a enthaltenen Daten Computerdatei.
Geschichte
Die Originalversion von Datei
kommt ursprünglich aus UNIX Research Version 4[1] 1973. System v brachte ein großes Update mit mehreren wichtigen Änderungen ein, insbesondere die Dateitypinformationen in eine externe Textdatei, anstatt sie in die Binärdatei selbst zu kompilieren.
Am wichtigsten BSD und Linux Verteilungen verwenden a frei, Open Source Neuauflagen, die 1986–87 von Ian Darwin geschrieben wurde[2] von Grund auf neu. Es wurde von erweitert von Geoff Collyer 1989 und seitdem hatte viele andere Beiträge, darunter Guy Harris, Chris Lowth und Eric Fischer; Ab Ende 1993 wurde seine Aufrechterhaltung von Christos Zoulas organisiert. Das OpenBSD System verfügt über eine eigene Untergruppe, die von Grund auf neu geschrieben wurde, verwendet jedoch die Ersammlung von Darwin/Zoulas von Informationen mit magischen Dateien.
Das file
Der Befehl wurde auch auf die portiert Ibm i Betriebssystem.[3]
Spezifikation
Das Einzel -Unix -Spezifikation (SUS) Gibt an, dass eine Reihe von Tests in der in der Befehlszeile angegebenen Datei durchgeführt wird:
- Wenn die Datei nicht gelesen werden kann oder deren UNIX -Dateityp ist unbestimmt, die
Datei
Das Programm zeigt an, dass die Datei verarbeitet wurde, ihr Typ jedoch unbestimmt war. -
Datei
Muss in der Lage sein, die Typen zu bestimmen Verzeichnis, FIFO, Steckdose, Block Sonderdatei, und Charakter -Sonderdatei - Dateien null Länge werden als solche identifiziert
- Ein ursprünglicher Teil der Datei wird berücksichtigt und
Datei
ist die Verwendung von positionsensitiven Tests - Die gesamte Datei wird berücksichtigt und
Datei
ist, kontextsensitive Tests zu verwenden - Die Datei wird als identifiziert
Daten
Datei
Datei
Die positionsensitiven Tests werden normalerweise implementiert, indem verschiedene Positionen innerhalb der Datei mit einer Textdatenbank von angepasst werden Magische Zahlen (Siehe Nutzungsabschnitt). Dies unterscheidet sich von anderen einfacheren Methoden wie z. Dateierweiterungen und Schemata mögen MIME.
In den meisten Implementierungen die Datei
Der Befehl verwendet eine Datenbank, um die Untersuchung der Lead -Bytes voranzutreiben. Diese Datenbank ist in einer Datei mit dem Titel implementiert Magie
, deren Standort normalerweise in ist /etc/Magic
, /usr/share/Datei/Magie
oder ein ähnlicher Ort.
Verwendungszweck
Die Sus[4] Mandatiert die folgenden Optionen:
- -M DateiGeben Sie eine speziell formatierte Datei an, die positionsensitive Tests enthält. Standard-positionsensitive Tests und kontextsensitive Tests werden nicht durchgeführt.
- -m Datei, wie für -MEs werden jedoch Standardtests durchgeführt, nachdem die Tests in eingegeben wurden
Datei
. - -dFühren Sie Standardpositionsens- und Kontext-sensitive Tests in der angegebenen Datei durch; Dies ist das Standardverhalten, es sei denn -M oder -m angegeben.
- -h, nicht Symbolische Links Dies weisen auf eine vorhandene Datei oder eine vorhandene Verzeichnis.
- -LDie symbolische Link, die auf eine vorhandene Datei oder ein Verzeichnis hinweist.
- -ichklassifizieren Sie die Datei nicht weiter als auch als entweder als entweder zu identifizieren: nicht vorhanden, eine Block -Sonderdatei, eine Zeichenspezialendatei, ein Verzeichnis, a FIFO, eine Steckdose, ein symbolischer Link oder eine reguläre Datei. Linux[5] und BSD[6] Systeme verhalten sich anders mit dieser Option und geben stattdessen eine aus Internet -Medientyp (""MIME Geben Sie ") das erkannte Dateiformat identifizieren.
Sonstiges Unix und Unix-artig Betriebssysteme können zusätzliche Optionen als diese hinzufügen, wie z. -s "Spezialdateien", -k 'weiterhin' oder -r 'RAW' (Beispiele unten).
Der Befehl sagt nur, was die Datei sieht aus wie, nicht was es ist (für den Fall wo Datei schaut sich den Inhalt an). Es ist einfach, das Programm zu täuschen, indem es eine magische Nummer in eine Datei einbringt, deren Inhalt nicht übereinstimmt. Somit ist der Befehl als Sicherheitsinstrument als in bestimmten Situationen nicht nutzbar.
Beispiele
$ Datei file.c Datei.c: C Programmtext
$ Dateiprogramm Programm: ELF 32-Bit LSB ausführbar, Intel 80386, Version 1 (Sysv), dynamisch verknüpft (Verwendet gemeinsame Bibliotheken), abgestreift
$ Datei /dev/hda1 /dev /hda1: Special Block (0/0)
$ file -s/dev/hda1/dev/hda1: linux/i386 ext2 Dateisystem
Beachten Sie, dass -S eine nicht standardmäßige Option ist, die nur auf einigen Plattformen erhältlich ist, was sagt Datei
Lesen Sie Gerätedateien und versuchen Sie, deren Inhalt zu identifizieren, anstatt sie nur als Gerätedateien zu identifizieren. Normalerweise Datei
Versucht nicht, Gerätedateien zu lesen, da das Lesen einer solchen Datei unerwünschte Nebenwirkungen haben kann.
$ file -k -r libmagic-dev_5.35-4_armhf.deb # (auf Linux) libmagic-dev_5.35-4_Armhf.Deb: Debian Binärpaket (Format 2.0) - Strom ar Archiv - Daten
Durch die nicht standardmäßige Option -k Das Programm hört nicht nach dem ersten Hit gefunden, sondern sucht nach anderen passenden Mustern. Das -r Die Option, die in einigen Versionen erhältlich ist, verursacht das Undruckbare Neue Zeile Charakter, der in seiner rohen Form und nicht in seiner Oktaldarstellung angezeigt wird.
$ Datei komprimiert.gz komprimiert.gz: gzip komprimiert Daten, entleert, Original Dateiname, "komprimiert", zuletzt geändert: Do 26. Januar 14:08:23 2006, OS: Unix
$ file -i komprimiert.gz # (auf Linux) compressed.gz: Anwendung/X-GZIP; Charset=binär
$ Datei data.ppm data.ppm: Netpbm ppm "Rawbits" -Filddaten
$ Datei /bin /cat /bin /cat: Macho universeller binär mit 2 Architekturen /bin/kat (für Architektur PPC7400): Mach-o ausführbarer PPC /bin /cat (für Architektur i386): Mach-O ausführbar i386
$ Datei/usr/bin/vi/usr/bin/vi: symbolischer Link zu VIM
Identifizierung Symbolische Links ist auf allen Plattformen nicht verfügbar und wird derenferenziert, wenn -L wird bestanden oder Posixly_correct ist eingestellt.
Bibliothek Libmagic
Ab Version 4.00 der Ian Darwin/Christos Zoulas -Version von Datei
die Funktionalität von Datei
ist in a integriert libmagic
Bibliothek das ist über über C (und c-kompatible) Verknüpfung;[7][8] Datei
wird mit dieser Bibliothek implementiert.[9][10]
Verweise
- ^ "Quelle der UNIX V4" Datei "Man Page". Archiviert vom Original am 2019-12-10. Abgerufen 2022-03-13.
- ^ Die frühe Geschichte dieses Programms wird in seinem privaten Lebenslauf -Repository aufgezeichnet. sehen [1] Archiviert 2017-04-01 bei der Wayback -Maschine das Protokoll des Hauptprogramms
- ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Archiviert (PDF) vom Original am 2021-03-05. Abgerufen 2020-09-05.
- ^ "Die offenen Gruppenbasisspezifikationen Ausgabe 7 - Datei Befehl". Archiviert vom Original am 2018-10-12. Abgerufen 2014-08-20.
- ^ Linux Benutzer Handbuch - Benutzerbefehle - -
- ^ Netbsd Allgemeine Befehle Handbuch - -
- ^ Linux Programmierer Handbuch - Bibliotheksfunktionen - -
- ^ Netbsd Bibliotheksfunktionen Handbuch - -
- ^ Zoulas, Christos (27. Februar 2003). "Datei-3.41 ist jetzt verfügbar". Datei (Mailingliste). Archiviert Aus dem Original am 4. März 2016. Abgerufen 1. Januar, 2013.
- ^ Zoulas, Christos (24. März 2003). "Datei-4.00 ist jetzt verfügbar". Datei (Mailingliste). Archiviert Aus dem Original am 28. Dezember 2016. Abgerufen 1. Januar, 2013.
Externe Links
- Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe : Dateityp bestimmen - Shell- und Dienstprogrammreferenz,
- Datei Mailingliste
- Dateiveröffentlichungen
Handbuchseiten
- Plan 9 Programmierhandbuch, Volume 1 - -
- Linux Benutzerbefehle Handbuch - -
- Netbsd Bibliotheksfunktionen Handbuch - -
- Linux Bibliotheksfunktionen Handbuch - -
- OpenBSD Allgemeine Befehle Handbuch - -
Sonstiges
- Befehl feiner freier Datei - Homepage für Version von
Datei
Wird in Hauptbsd- und Linux -Verteilungen verwendet. - Datei für Windows - Webseite von Native Gnuwin32 Port von
Datei
Für 32 -Bit -Fenster. - Das Libmagic-dev-Paket an pakete.debian.org
- Trid, eine Alternative, die bewertete Antworten (statt nur einer) basierend auf Statistiken.