[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} ##[[Inhaltsverzeichnis()]] [https://www.darwinsys.com/file/ file] {en} ist ein Kommandozeilenprogramm, welches den Dateityp einer Datei bestimmt. Dies geschieht aber nicht anhand der Dateiendung, sondern file untersucht einen Teil des Inhalts der Datei, um den Dateityp zu bestimmen. file gehört zu den Urgesteinen der Unix-Welt, die erste Version datiert auf das Jahr 1973. = Installation = file ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten aber über das Paket {{{#!vorlage Paketinstallation file }}} installiert werden[1]. = Benutzung = Die allgemeine Syntax von file lautet: {{{#!vorlage Befehl file [OPTIONEN] DATEI(EN) }}} Die Ausgabe sieht dann z.B. so aus: {{{#!vorlage Befehl file dokument.odt drawing.dwg daten.csv info.pdf }}} {{{ dokument.odt: OpenDocument Text drawing.dwg: DWG AutoDesk AutoCAD 2007/2008/2009 daten.csv: ASCII text info.pdf: PDF document, version 1.7 }}} Wo bekannt bzw. bestimmbar zeigt file auch die Formatversion der Datei an, im obigen Beispiel bei der Ausgabe zu der DWG und PDF Datei zu sehen. Bei der Bestimmung des Dateityps nutzt file einen dreistufigen Mechanismus. Wer sich für die Details der einzelnen Stufen interessiert: diese sind in der [:man:Man-Page] im Abschnitt ''"Description"'' erklärt. Die Daten, auf denen die "magischen Tests" von file zur Bestimmung basieren, liegt unter Ubuntu im Verzeichnis '''/usr/lib/file/magic.mgc'''. Das Programm kennt eine Reihe von Optionen, die man sich inklusive Erklärung wie folgt anzeigen lassen kann: {{{#!vorlage Befehl file --help }}} Mit der Option `-i` wird der [:MIME-Typ:] der Datei(en) ausgegeben statt der normalen Ausgabe von file: {{{#!vorlage Befehl file -i dokument.odt drawing.dwg daten.csv info.pdf }}} {{{ dokument.odt: application/vnd.oasis.opendocument.text; charset=binary drawing.dwg: image/vnd.dwg; charset=binary daten.csv: text/plain; charset=us-ascii info.pdf: application/pdf; charset=binary }}} Möchte man sich Informationen zu "special files" ausgeben lassen, wie z.B. den Dateien, die den Einhängepunkten von Laufwerken zugeordnet sind, muss man die Option `-s` nutzen, um eine aussagekräftigere Ausgabe zu bekommen: {{{#!vorlage Befehl file /dev/sdc }}} gibt {{{ /dev/sdc: block special (8/32) }}} Mit der Option `-s` sieht die Ausgabe so aus: {{{#!vorlage Befehl sudo file -s /dev/sdc }}} {{{ /dev/sdc: Linux rev 1.0 ext4 filesystem data, UUID=3255683f-53a2-4fdf-91cf-b4c1041e2a62 (needs journal recovery) (extents) (64bit) (large files) (huge files) }}} Wie man sieht sind hier zusätzlich Root-Rechte[3] notwendig. Mithilfe der Option `-f` liest `file` auch Dateinamen aus einer Textdatei. Pro Zeile ein Dateiname. {{{#!vorlage Befehl sudo file -f files.txt }}} {{{ ssh_host_ed25519_key: OpenSSH private key /bin/apt: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6f62d73c4584d353d2bcbc6fb42b5e7cd1c476ba, for GNU/Linux 3.2.0, stripped }}} = Links = * [https://www.darwinsys.com/file/ Homepage] {en} von file * [github:file/file:Github Seite] von file ##tag: Shell