Vielleicht kennst du schon Befehle, wie ls, touch oder cat für deine Arbeit mit Dateien in der Linux-Shell.
Aber was verwendest du, um Metadaten einer Datei zu sehen? Hierfür ist stat goldrichtig. Damit kannst du gezielt Details zu Elementen im Dateisystem abfragen, ohne das Objekt zu öffnen oder zu verändern.
Dieser Artikel zeigt dir den Befehl stat genauer und wird dir helfen, bessere Skripte zu schreiben und dein Verständnis für das Dateisystem zu vertiefen.
Grundlegende Syntax
Der Befehl stat lässt sich in der einfachsten Form so aufrufen:
|
|
Einfache Verwendung
In meinem Projekt kann ich das zum Beispiel direkt einsetzen:
|
|
Wichtige Optionen von stat
Das sind ein paar wichtige Parameter:
| Option | Bedeutung |
|---|---|
-f / --filesystem |
zeigt Informationen zum Dateisystem |
-L / --dereference |
folgt symbolischen Links |
-c / --format=FORMAT |
Ausgabe-Format angeben |
--printf=FORMAT |
formatierte Anzeige |
-t / --terse |
maschinenlesbare Ausgabe |
Gerade in Skripten sind --format und --printf wirklich hilfreich, da sie dir eine präzise Steuerung ermöglichen.
Praktische Beispiele
Ich zeige dir die meisten Beispiele mit meiner README.md, aber du kannst natürlich Daten zu jedem beliebigen Element abfragen!
Metadaten anzeigen
Der einfache Aufruf stat README.md produziert ungefähr diese Ausgabe:
|
|
Du siehst hier unter anderem folgende Daten:
- die Größe in Bytes,
- verschiedene Timestamps,
- Eigentümer, Gruppe, Berechtigungen
- und den Dateityp
Diese Daten verwaltet das Dateisystem in einem sogenannten INode, den man in der Ausgabe auch sieht.
Vielleicht bist du ja beim Befehl ln ja schon über INodes gestolpert. Wenn nicht, dann lies mehr dazu unter Hardlinks nach.
Dateisystem anzeigen
Mit -f erhältst du Daten zum Dateisystem, auf dem das betreffende Element liegt:
|
|
Mit diesem Ergebnis bei mir:
|
|
symbolische Links auflösen
Falls das abgefragte Element ein Link ist, so zeigt stat die Daten dafür an. Mit -L kannst du aber dem Link folgen und die Details zum Ziel anzeigen:
|
|
Format angeben
Gerade beim Einsatz in Shell-Skripten ist es oft sinnvoll, die Ausgabe von stat zu filtern oder anders zu strukturieren.
Dateigröße anzeigen:
|
|
letzten Änderungszeitpunkt anzeigen:
|
|
Name und Typ anzeigen:
|
|
Inode anzeigen:
|
|
Berechtigungen sehen:
|
|
Escape-Sequenzen mit --printf
formatierte Ausgabe:
|
|
- hier steht
\nfür Zeilenumbrüche
Terse-Format (maschinenlesbar)
Bei Verwendung von -t werden alle Daten in einer Zeile ausgeben:
|
|
Format-Platzhalter
In einigen Beispielen haben wir Platzhalter verwendet, die mit % beginnen. Hier eine knappe Auswahl:
| Platzhalter | Bedeutung |
|---|---|
%n |
Dateiname |
%s |
Dateigröße in Bytes |
%F |
Dateityp |
%a, %A |
Rechte (oktal/menschlesbar) |
%U, %G |
User, Gruppe |
%x, %y, %z |
Zeitpunkt für Zugriff, Änderung, Statusänderung |
%i |
Inode-Nummer |
Sie lassen sich immer mit --format und --printf verwenden. Du kannst sie auch mit weiterem Text kombinieren, wie wir oben gesehen haben.
So kannst du zum Beispiel einen Schlüssel (key) und einen Wert (value) ausgeben:
|
|
Fazit
Es lohnt sich stat zu kennen: So kannst du ohne Umwege viele Details zu Elementen im Linux-Dateisystem abfragen.
Im einfachsten Fall rufst du einfach stat auf einem Element auf.
Bei speziellen Anforderungen kannst du die Ausgabe eingrenzen und formatieren!
Verwandte Befehle
Willst du tiefer einsteigen, dann sieh dir auch verwandte Befehle zu stat an:
Hilfe zu stat
Mehr zu stat findest du unter man stat und tldr stat.
Details zum Befehl tldr gibt es hier.