Hast du dich schon mal gefragt: Mit welchem Programm kann ich diese Datei öffnen? Oder womit habe ich das irgendwann mal erstellt?
Natürlich kannst du zu diesem Zweck eine Suchmaschine befragen und dir werden (hoffentlich brauchbare) Ergebnisse ausgegeben.
Aber wusstest du schon, das du diese Frage unter Linux auch lokal im Terminal beantworten kannst? Dafür gibt es den Befehl file
.
Dieser Artikel zeigt dir die Funktionsweise, wichtige Optionen und praktische Beispiele, die dir helfen werden file
effektiv zu nutzen.
Einfacher Aufruf
Starten wir mit dem einfachsten Aufruf. Damit kannst du herausfinden, was für eine Datei du vor dir hast:
|
|
Bei mir produziert das zum Beispiel folgendes Ergebnis:
|
|
Wenn ich es also nicht mehr wüsste, dann hätte ich jetzt die Antwort: Ich kann dokument.odt
mit LibreOffice Writer öffnen.
Funktionsweise von file
Hinter den Kulissen ist es aber noch viel spannender: Der Befehl file
führt zur Ermittlung vom Dateityp verschiedene Tests aus.
Begonnen wird mit Dateisystem-Tests, gefolgt von Magic-Tests und zum Schluss erfolgen Sprach-Tests.
Magie? 🔮 Naja, nicht ganz. Für den Magic-Part werden Dateien hergenommen in denen viele Muster von bekannten Formaten gespeichert sind. Diese findest du lokal meist in der Datei /usr/share/misc/magic.mgc
oder im Ordner /usr/share/misc/magic
.
Wichtige Optionen von file
Bevor wir uns gleich der praktischen Nutzung zuwenden, schauen wir zunächst einige Flags an, die du zusammen mit file
einsetzen kannst:
Option | Bedeutung |
---|---|
-l / --list |
zeigt unterstützte Datei-Typen an |
-b / --brief |
erzeugt eine knappe Ausgabe |
-k / --keep-going |
sucht mehrere mögliche Treffer für eine Datei |
-z / --umcompress |
dekomprimiert und analysiert Archive, wie .gz |
-i / --mime |
zeigt den Mime-Typ an |
-s / --special-files |
lässt die Analyse von Spezial-Files zu, wie Devices |
-f / --files-from |
liest die Datei aus einer Datei |
Daran erkennst du bereits, wo dir file
noch nützlich sein kann.
Praktische Beispiele
Sehen wir uns jetzt den echten Einsatz an, um dich nicht weiter mit der trockenen Theorie 📚 zu langweilen.
alle Typen auflisten und durchsuchen
Eher informativ, aber trotzdem lesenswert ist die Ausgabe welchen Arten von Dateien du mit file
ermitteln kannst.
Das geht einfach so:
|
|
Da die Ausgabe umfangreich ist, kannst du sie seitenweise lesen:
|
|
Oder du filterst das Ergebnis nach Begriffen, die für dich relevant sind:
|
|
kurze Ausgabe
Wenn du nur an der Angabe vom Typ interessiert bist, dann wird dir diese Variante schon zu viel sein:
|
|
Das Weglassen vom Dateinamen kannst du erzwingen mit -b
oder --brief
:
|
|
Dann sieht die Ausgabe nur noch so aus:
|
|
mehrere Treffer anzeigen
Häufig kommt es auch vor, dass eine Datei in einer anderen eingebettet ist. So etwas kannst du mit -k
oder --keep-going
gut herausfinden.
Zuerst habe ich ein kombiniertes File erstellt:
|
|
Ein einfacher Aufruf zeigt nichts Ungewöhnliches:
|
|
Die Anweisung zur weiteren Suche mit -k
bringt jedoch interessante Ergebnisse:
|
|
In diesem Fall zeigt es mir zum Beispiel auch an, dass es sich ausserdem um ein ZIP-Archiv handelt.
Und falls du dich gefragt hast: Was bedeutet dieses \012-
in der Ausgabe? Das ist die Standard-Text-Sequenz, die in diesem Fall von file
verwendet wird.
Du kannst stattdessen auch ein anderes Trennzeichen angeben, um die Ausgabe übersichtlicher zu gestalten:
|
|
Dekomprimierung zur Analyse
Etwas offensichtlicher als bei eingebetteten Dateien ist die Betrachtung von Inhalten eines Archivs. Dabei kannst du Formate .gz
, .xz
oder .bz2
betrachten.
Hier ein Beispiel:
|
|
Mime-Types anzeigen
Auch sehr praktisch kann es sein den Mime-Typ herauszufinden.
Ich hier zum Beispiel ein PDF betrachtet:
|
|
Das wird dir helfen, die Formate zuzuordnen, wie sie oft im E-Mail- und Web-Bereich verwendet werden.
Spezial-Files analysieren
Mit file
lassen sich auch besondere Dateien betrachten. Dazu gehören Elemente unter dem virtuellen Filesystem /dev
, die zum Beispiel Character-Devices oder Block-Devices sein können.
Dafür wirst du meist sudo
-Rechte benötigen:
|
|
Noch ein Beispiel dazu:
|
|
Daten aus Datei analysieren
Und zum Abschluss noch ein letzter, praktischer Tipp für die Nutzung von file
: Du kannst die zu analysierenden Elemente auch aus einer Datei lesen.
So habe ich meine Datei erstellt:
|
|
Du kannst das natürlich in jedem Ordner oder mit anderem Dateinamen nutzen.
Danach habe ich alles mit file
betrachtet:
|
|
Hier wird natürlich angenommen, dass es die in der Datei vorkommenden Elemente auch im selben Ordner gibt. Andernfalls wirst du mit Fehlern dieser Art konfrontiert:
|
|
Resümee
Der Befehl file
ist ein einfaches, aber sehr leistungsfähiges Werkzeug zur Analyse von Dateien unter Linux.
Er zeigt dir nicht nur, um welchen Typ es sich bei einer Datei handelt, sondern liefert auch bei komprimierten oder verschachtelten Inhalten hilfreiche Informationen.
Damit kann file
bei der Fehlersuche, Dateiverwaltung oder Systemadministration nützlich sein - direkt im Terminal, ohne zusätzliche Software.
Verwandte Befehle
Vertiefen kannst du dein Wissen mit diesen Befehlen, die du oft zusammen mit stat
einsetzen wirst:
Hilfe zu file
Mehr zu file
findest du unter man file
und tldr file
.
Details zum tldr
wiederum findest du hier.