|
file ermittelt den Dateityp
Syntax: file [-vczL] [-f <Namendatei>] [-m <Magicdatei>] <Datei> ...
Version: file-3.22
Beschreibung:
file bestimmt anhand mehrerer Kriterien den Typ einer oder
mehrerer Dateien. Die durchgeführten Tests sind recht aussagekräftig
und liefern in vielen Fällen eine sehr gute Beschreibung der spezifizierten
Dateien.
file führt die folgenden Untersuchungen in der hier wiedergegebenen
Reihenfolge durch:
- Filesystemtest: Dieser ermittelt, ob es sich um eine Spezialdatei (FIFO, Pipe, Directory, leere oder ausführbare Datei, symbolischen Link und andere Spezialdateien) handelt. Der Dateisystemtest wird mit Hilfe des stat Systemaufrufs durchgeführt.
- Magic-Number-Test: Anhand einer Kennzahl, die sich am Anfang vieler Dateien in der Nähe des Dateianfangs an einer festgelegten Stelle befindet und festgelegt ist, werden viele (binäre) Dateien identifiziert. Mit Hilfe solcher Kennzahlen entscheidet zB. das Betriebssystem, ob eine Datei korrekt ausführbar ist oder nicht. Dieser Test wird durch den Vergleich mit einer Datenbank durchgeführt. Diese 'Dateitypdatenbank' ist üblicherweise in einer Datei mit dem Namen 'magic' (/etc/magic oder /usr/lib/magic) enthalten.
- Sprachtest: Textdateien (die nur ASCII-Zeichen enthalten) werden einem weitgehenden Sprachtest unterzogen. Dieser ermittelt anhand einer Reihe von Schlüsselworten die im Dateiinhalt verwendete Sprache. Dies bezieht sich ebenso auf natürliche wie Programmiersprachen und ist naturgemäß nicht wirklich sicher.
file kann verschiedene Dateitypdatenbanken (Option -m) zur Bestimmung des Typs verwenden. Diese liegen in einem editierbaren Format vor und können vom User selbst erstellt und verändert werden.
Alle lesbaren Dateien (die problemlos auf dem Terminal ausgegeben werden
können) enthalten in ihrer Beschreibung die Zeichenkette text,
Dateien, die ausführbare Programme enthalten, executable und alle anderen Dateien, die normalerweise nicht angezeigt werden können,
data. Nur allgemein bekannte Dateiformate wie core Dateien oder tar Archive werden ohne diese Schlüsselworte benannt.Die Zuordnung ist nicht perfekt. sty-files werden z.B. nicht korrekt erkannt.
file kann die Spezifikation der zu untersuchenden Dateien auf unterschiedliche Weise erhalten. Neben der normalen Ausgabe in der Kommandozeile können Dateien auch in einer Liste (Option -f) enthalten sein, die file dann zeilenweise bearbeitet.
Anmerkung:
Die Dateiextension findet bei der Bestimmung des Dateityps keine Berücksichtigung.
|
Optionen: |
| -c |
(check) Ein Selbsttest der Dateitypdatenbank wird durchgeführt. Diese Option wird hauptsächlich zusammen mit -m verwendet, um eigene, neue Dateitypdatenbanken zu überprüfen. |
| -f <file> |
(file) Die Dateispezifikation erfolgt anhand einer Liste in der Datei <file>. In dieser sind die einzelnen Dateien mit ihrem Pfad zeilenweise enthalten. Wird <file> als - angegeben, liest file von der Standardeingabe. |
| -L |
(links) Symlinks werden referenziert (auflöst). Links werden nicht als spezifizierte Dateien angesehen. |
| -m |
Magiedatei benutzt die benannte Magiedatei anstelle von /etc/magic für den Kennzahlentest. |
| -v |
Programmversion |
| -z |
file versucht, komprimierte Dateien zu entpacken, bevor sie
analysiert werden. |
|
Environment-Variable: |
| $MAGIC |
enthält die voreingestellte Dateitypdatenbank. Wurde
$MAGIC nicht gesetzt, wird die einkompilierte Datei /usr/lib/magic voreingestellt. |
Beispiele für die Nutzung des
Programms:
| Dateityp ermitteln: |
user@sonne> file <Datei> |
|
| die im Verzeichnis (~/*) vorhandenen Dateien mittels zweier Datenbanken untersuchen. Links und gepackte Dateien berücksichtigen: |
user@sonne> file -Lz -m /etc/magic: /usr/lib/magic ~/* |
|
| Symlink referenzieren: |
user@sonne> file /usr/bin/tex
/usr/bin/tex:
symbolic link to ../texmf/bin/tex
user@sonne> file -L /usr/bin/tex
/usr/bin/tex: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked, stripped |
|