Übersicht
Der Befehl `file` identifiziert den Typ einer Datei, indem er deren Inhalt analysiert, anstatt sich auf die Dateierweiterung zu verlassen. Er erkennt verschiedene Formate wie Text/Binär, ausführbare Dateiformate (ELF), komprimierte Dateien, Bilder/Audio und kann auch MIME-Typen und Kodierungen ausgeben.
Hauptmerkmale
- Identifikation basierend auf dem tatsächlichen Inhalt, unabhängig von der Erweiterung
- Kann MIME-Typen und Zeichenkodierungen ausgeben
- Wahlweise Identifikation des Ziels eines symbolischen Links oder des Links selbst
- Versucht, das Innere komprimierter Dateien zu überprüfen (-z)
Anwendungsbeispiele
Situationen, in denen der Befehl `file` besonders nützlich ist.
- Identifikation des tatsächlichen Formats einer Datei mit falscher Erweiterung (z.B. eine PDF, die sich als .jpg tarnt)
- Bestimmung des Typs von Dateien ohne Erweiterung
- Verzweigung der Verarbeitung in Skripten basierend auf dem Dateityp
- Bestimmung des MIME-Typs hochgeladener Dateien in Web-/Netzwerkdiensten
- Identifikation des symbolischen Links selbst oder seines Ziels
- Analyse des Inhalts von komprimierten Dateien
- Identifikation von ausführbaren Dateiformaten in der Sicherheitsanalyse und Forensik
Wichtige Optionen
Häufig verwendete Optionen, gruppiert nach Anwendungsfall.
1) 기본 동작 & 출력 제어
2) 입력/대상 지정
3) 매직 데이터베이스/제외/디버그
4) 도움말/버전
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`file` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Häufig verwendete Muster als Beispiele zusammengefasst.
Grundlegende Identifikation
file /bin/ls
Gibt den Dateityp im Standardformat aus
Kurze Ausgabe ohne Dateiname
file -b /bin/ls
Einfache Ausgabe zur leichteren Verarbeitung in Skripten
MIME-Typ/Kodierung
file --mime-type index.html && file --mime-encoding README.md
Nützlich zur Typidentifikation in Web-/Pipelines
Komprimiertes Archiv prüfen
file -z backup.tar.gz
Schätzt den tatsächlichen Inhalt einer komprimierten Datei
Symbolischer Link selbst vs. Ziel
file -h symlink && file -L symlink
Prüft den Link selbst (-h) oder folgt dem Ziel (-L)
MIME-Typen mit find stapelweise überprüfen
find . -type f -print0 | xargs -0 file --mime-type
Übergibt Dateilisten sicher mit NUL-Trennzeichen
Speicherort der Magic-Datenbank
Der Pfad kann je nach System und Distribution variieren.
🪄 Standard kompilierte Magic-DB
/usr/share/file/magic.mgc
Standardpfad der meisten Distributionen
📁 Quell-Magic-Verzeichnis
/usr/share/file/magic/
Quellregeln vor der Kompilierung (original, nicht .mgc)
Exit-Codes
Beachten Sie diese für die Verzweigungslogik in Skripten.
Code | Bedeutung |
---|---|
0 | Normal: Identifikation erfolgreich (oder angeforderte Aktion erfolgreich) |
1 | Allgemeines Problem: Datei nicht vorhanden/nicht zugänglich/Identifikation fehlgeschlagen usw. |
2 | Verwendungsfehler oder Systemfehler |
Installation
Meistens standardmäßig enthalten, andernfalls wie folgt installieren:
Debian/Ubuntu
sudo apt update && sudo apt install -y file
RHEL/CentOS/Fedora
sudo dnf install -y file
Arch Linux
sudo pacman -S --needed file
openSUSE
sudo zypper install -y file
Tipps & Hinweise
- Die explizite Verwendung von `--mime-type` und `--mime-encoding` kann Unterschiede im Verhalten von `-i/--mime` je nach Distribution/Version vermeiden.
- Umgang mit symbolischen Links: Verwenden Sie `-h`, um den Link selbst zu sehen, und `-L`, um die Zieldatei zu überprüfen.
- Bei der Massenverarbeitung ist das Muster `find -print0 | xargs -0` sicher für Dateinamen, die Leerzeichen/Zeilenumbrüche enthalten.
- Je nach Komprimierungsformat kann `-z` möglicherweise nicht immer den Inhalt überprüfen. Dekomprimieren Sie die Datei zuerst, falls erforderlich.