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
\n
fü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.