Der Befehl stat

stat-featured

In diesem Beitrag lernen Sie den Befehl stat kennen, welcher unter Linux- / UNIX-Betriebssystemen verwendet wird, um verschiedene Metadaten von Dateien und Ordnern - etwa zu Zeitstempeln, Berechtigungen, Besitzer, Gruppe und dem Dateityp - auszugeben. Die Aufgabe von stat kann dabei mithilfe von Formatangaben zudem fast beliebig angepasst werden. 

Da stat Teil des Pakets coreutils ist, ist es auf den meisten Systemen bereits vorinstalliert. 

Allgemeine Syntax

Die allgemeine Syntax des Befehls stat lautet folgendermaßen:

stat [Optionen] [Datei / Verzeichnis]

Der Befehl kann ohne Angabe von Optionen auf einer Datei oder einem Verzeichnis ausgeführt werden. Bei diesem Anwendungsfall umfasst die Ausgabe von stat eine Vielzahl an Informationen zur gegebenen Datei bzw. dem gewählten Verzeichnis: Name, Größe, Blöcke, EA Block, Typ, Gerät, Inode, Verknüpfungen, Berechtigungen sowie Zugriffs- / Modifizierungs- / Änderungs- und Erstellungszeitstempel.

Beispiel: stat ohne Optionen (Datei)

In diesem Beispiel wird die Anwendung von stat ohne jegliche Optionen gezeigt. Es soll eine umfangreiche Ausgabe von Informationen zu einer Datei "linux-befehle.pdf" erfolgen, welche sich im aktuellen Arbeitsverzeichnis befindet.
Eingabe:

stat linux-befehle.pdf

Ausgabe:
befehl-stat-beispiel-1
Beispiel: stat ohne Optionen (Verzeichnis)

Ähnlich wie im ersten Beispiel soll stat hier wieder ohne Optionen ausgeführt werden. In diesem Fall sollen nun jedoch Informationen zu einem Verzeichnis "grundlagen/" im aktuellen Arbeitsverzeichnis ausgegeben werden.
Eingabe:

stat grundlagen/

Ausgabe:
befehl-stat-beispiel-2

Wichtige Optionen

Die wichtigsten Optionen des Befehls stat werden in diesem Abschnitt beschrieben und ihre Anwendung mit Beispielen verdeutlicht.

-L - Verknüpfungen folgen

Standardmäßig gibt stat bei Verwendung mit Verknüpfungen Informationen zu diesen, nicht jedoch zu den Dateien, auf welche sie zeigen, aus. Mithilfe der Option -L (Link) kann stat Verknüpfung folgen, sodass Informationen zur jeweiligen Zieldatei der Verknüpfung angezeigt werden. 

stat -L [Datei / Verzeichnis]
Beispiel: Option -L

Hier soll die Funktionsweise der Option -L vorgestellt werden: Zunächst wird der Befehl stat dazu ohne Optionen auf einer symbolischen Verknüpfung angewendet, welche sich im aktuellen Arbeitsverzeichnis befindet. Anschließend wird stat erneut auf derselben symbolischen Verknüpfung ausgeführt, jedoch unter der Option -L.
Eingabe:

Zunächst wird stat ohne Optionen auf der symbolischen Verknüpfung "hellberg" angewendet.

stat hellberg

Ausgabe:

Die Ausgabe umfasst nun Informationen zur gegebenen symbolischen Verknüpfung selbst. Die Verknüpfung "hellberg" zeigt in diesem Fall auf das Verzeichnis /home/hellberg/.

befehl-stat-beispiel-3
Eingabe:

stat wird diesmal die Option -L zum Folgen von Verknüpfungen übergeben.

stat -L hellberg

Ausgabe:

In der Ausgabe werden Informationen zum Verzeichnis /home/hellberg angezeigt, welches das Ziel der Verknüpfung "hellberg" darstellt.

befehl-stat-beispiel-4

-f - Dateisystemstatus anzeigen

Wird die Option -f (file-system) angegeben, so gibt stat anstelle des standardmäßigen Dateistatus den Dateisystemstatus aus.

stat -f [Datei / Verzeichnis]

-c - Format spezifizieren

Möchten Sie anstelle der standardmäßigen Ausgabe von stat ein eigenes Format verwenden, so können Sie dies mithilfe der Option -c tun. Das zu verwendende Format wird der Option dann, bestenfalls in Anführungszeichen eingefasst, als Parameter übergeben. Die verfügbaren Formatangaben finden Sie im entsprechenden Abschnitt dieses Beitrags.

stat -c [Format] [Datei / Verzeichnis]

Ein Zeilenumbruch wird von stat automatisch am Ende der Ausgabe eingefügt.

Beispiel:
Option -c

Die Ausgabe des Befehls stat soll in diesem Beispiel mithilfe der Option -c und einer Formatangabe festgelegt werden.
Eingabe:

stat -c "Das Element %n ist vom Typ %F." linux-befehle.pdf

Ausgabe:

Es werden nun Dateiname ("%n") und Dateityp ("%F") im gegebenen Format ausgegeben.

Das Element linux-befehle.pdf ist vom Typ reguläre Datei.

--printf - Format ("\" interpretieren)

Die Option --printf wird, ähnlich wie auch die Option -c zur Angabe eines eigenen Formats für die Ausgabe von stat verwendet. Maskierungen mit dem Rückschrägstrich "\", wie etwa "\n" für einen Zeilenumbruch, werden hierbei jedoch interpretiert. Im Vergleich zur Option -c wird ein Zeilenumbruch am Ende der Ausgabe nicht automatisch eingefügt - dies muss mit "\n" erfolgen.

stat --printf [Format] [Datei / Verzeichnis]
Beispiel: Option --printf

Auch hier soll die Ausgabe von stat auf ein eigenes Format festgelegt werden. In diesem Beispiel wird dabei jedoch die Option --printf verwendet - mithilfe von Maskierungen können nun etwa auch Zeilenumbrüche an beliebiger Stelle eingesetzt werden.
Eingabe:

stat --printf "Dateiname: %n\nDateityp: %F\nGroesse: %s\n" linux-befehle.pdf

Ausgabe:

Dateiname, Dateityp und Dateigröße (in Bytes) werden nun im vorgegebenen Format ausgegeben.

Dateiname: linux-befehle.pdf

Dateityp: reguläre Datei

Groesse: 816976

-t - Ausgabe in Kurzform

Mit der Option -t (terse) schließlich eine Ausgabe von Datei- / Verzeichnis-Informationen in Kurzform möglich.

stat -t [Datei / Verzeichnis]

Der Befehl stat mit der Option -t ist äquivalent zu folgendem Befehl:

stat -c "%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o" [Datei / Verzeichnis]

Wird neben der Option -t auch die Option -f zur Anzeige von Dateisystemstatus übergeben, so ist mit folgendem Befehl eine identische Ausgabe zu erhalten:

stat -f -c "%n %i %l %t %s %S %b %f %a %c %d" [Datei / Verzeichnis]
Beispiel: Option -t

Mithilfe der Option -t werden Informationen nun in Kurzform ausgegeben. Angewendet wird der Befehl stat auf einem Verzeichnis /home/hellberg/profi-tutorials/.
Eingabe:

stat -t /home/hellberg/profi-tutorials/

Ausgabe:

Die Ausgabe der Informationen durch Leerzeichen getrennt auf einer Zeile.

/home/hellberg/profi-tutorials/ 4096 8 41ed 1000 1000 803 1059700 9 0 0 1613646867 1611930934 1611930934 0 4096

Formatangaben (Ausgabe)

In diesem Abschnitt werden die verfügbaren Formatangaben für die Optionen -c und --printf aufgelistet. Die Formatangaben sind dabei in zwei Kategorien einzuteilen: Solche, die mit dem Dateistatus verwendet werden (ohne Option -f) und solche, die für Dateisysteme gültig sind (Verwendung der Option -f).

Dateistatus

Es folgen die Formatangaben für Dateistatus:

Sequenz

Ausgabe

Sequenz

Ausgabe

%a

Oktale Zugriffsrechte

%A

Menschenlesbare Zugriffsrechte

%b

Anzahl reservierter Blöcke

%B

Größe der mit %b gemeldeten Blöcke
(in Bytes)

%C

SELinux-Sicherheitskontext-Zeichenkette

Cell
Cell

%d

Gerätenummer (dezimal)

%D

Gerätenummer (hexadezimal)

%f

Raw-Modus (hexadezimal)

%F

Dateityp

%g

Gruppen-ID des Besitzers

%G

Gruppenname des Besitzers

%h

Anzahl harter Verknüpfungen

%i

Inode-Nummer

%m

Einhängepunkt

Cell
Cell

%n

Dateiname

%N

Dateiname in Anführungsstrichen
(mit Rückverfolgung, falls symbolische Verknüpfung)

%o

Hinweis auf optimale I/O-Übertragungsgröße

%s

Gesamtgröße (in Bytes)

%t

Major-Gerätetyp (hexadezimal) für Zeichen-/blockorientierte Spezialdateien

%T

Minor-Gerätetyp (hexadezimal) für Zeichen-/blockorientierte Spezialdateien

%u

Benutzer-ID des Besitzers

%U

Benutzername des Besitzers

%w

Menschenlesbare Erstellungszeit
("-", falls unbekannt)

%W

Erstellungszeit in Sekunden seit der Unix-Epoche ("0", falls unbekannt)

%x

Menschenlesbare letzte Zugriffszeit

%X

Letzte Zugriffszeit in Sekunden seit der Unix-Epoche

%y

Menschenlesbare letzte Daten-Modifizierungszeit

%Y

Letzte Daten-Modifizierungszeit in Sekunden seit der Unix-Epoche

%z

Menschenlesbare letzte Status-Änderungszeit

%Z

Letzte Status-Änderungszeit in Sekunden seit der Unix-Epoche

Dateisysteme

Für Dateisysteme sind folgende Formatangaben gültig:

Sequenz

Ausgabe

Sequenz

Ausgabe

%a

Freie Blöcke, die nicht-Superusern zur Verfügung stehen

%b

Gesamte Datenblöcke im Dateisystem

%c

Gesamte Dateiknoten im Dateisystem

%d

Freie Dateiknoten im Dateisystem

%f

Freie Blöcke im Dateisystem

%i

Dateisystem-ID (hexadezimal)

%l

Maximale Dateinamen-Länge

%n

Dateiname

%s

Blockgröße (für schnellere Übertragungen)

%S

Grundlegende Blockgröße
(für Blockzahlen)

%t

Dateisystem-ID (hexadezimal)

%T

Menschenlesbare Art des Dateisystems

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: