Linux-Tutorial / Dateitypen und Metadaten: ls, file, stat und readlink

Der Name oder die Erweiterung einer Datei allein bestimmt in Linux nicht ihren Typ. ls -l zeigt den Typ des Dateisystemeintrags und grundlegende Attribute an, file untersucht den Inhalt, um ein Format abzuleiten, und stat zeigt Metadaten wie Größe, Berechtigungen, Zeitstempel und Inode an. Diese Lektion erklärt, was jedes Ergebnis Ihnen sagt – und nicht sagt.

Verwenden Sie die Übung zu Hard-Links und symbolischen Links, um Dateinamen, Inodes und gespeicherte Linkziele zu vergleichen, nachdem Sie diese Attribute gelesen haben.

Was ein Linux-Dateityp bedeutet

Linux-Dateisystemeinträge umfassen gewöhnliche Dateien, Verzeichnisse, symbolische Links und Geräte. Das erste Zeichen einer ls -l-Ausgabezeile identifiziert den Typ des Eintrags. Eine Erweiterung wie .txt oder .jpg ist lediglich ein Teil des Namens; sie ist nicht dieser Dateisystem-Typindikator.

Erstes Zeichen Typ Beispiel
- Reguläre Datei Dokument- oder ausführbare Datei
d Verzeichnis Pfad, der andere Einträge enthält
l Symbolischer Link Eintrag, der auf einen anderen Pfad verweist
c, b Zeichen- oder Blockgerät Geräteeinträge unter /dev
p, s FIFO (benannte Pipe) oder Socket Einträge, die für die Interprozesskommunikation verwendet werden

Geben Sie ein Ziel mit ls -ld an, wenn Sie genau diesen Eintrag inspizieren möchten. Das Ausführen von ls -l auf einem Verzeichnis kann dessen Inhalt auflisten, anstatt eine Zeile für das Verzeichnis anzuzeigen.

ls -ld /etc /etc/passwd

Die /etc-Zeile beginnt normalerweise mit d und die /etc/passwd-Zeile mit -. Die übrigen Spalten enthalten Berechtigungen, Linkanzahl, Besitzer, Gruppe, Größe, Änderungszeit und Name. Tatsächliche Werte und Anzeigedetails variieren je nach System.

Das Inhaltsformat mit file erkennen

file untersucht Dateisysteminformationen und Eigenschaften des Inhalts einer Datei und gibt dann eine menschenlesbare Beschreibung. Auch ohne eine Erweiterung kann /etc/passwd möglicherweise als Text erkannt werden.

file /etc/passwd

Die Ausgabe könnte ungefähr wie folgt aussehen; die Formulierung variiert je nach Kodierung und Implementierung.

/etc/passwd: ASCII text

Dies ist eine auf Inspektion basierende Klassifizierung und keine unfehlbare Bestätigung des Datei-Inhalts. Die für Textkodierung oder andere Formate gemeldeten Details hängen von den Erkennungsregeln ab. Bei einem symbolischen Link hängt es auch von Optionen und Umgebung ab, ob file den Link oder dessen Ziel inspiziert; vergleichen Sie file -h link mit file -L link.

Verwenden Sie stat, um Metadaten zu inspizieren

stat meldet Informationen, die vom Dateisystem verwaltet werden, nicht den Text oder andere Inhalte der Datei. Es kann Größe, Berechtigungen, Besitzer, Inode-Nummer, Link-Anzahl und mehrere Zeitstempel anzeigen. Ein Inode ist eine Dateisystemstruktur, die zur Verwaltung der Metadaten eines Eintrags verwendet wird; er ist vom Namen des Eintrags zu unterscheiden.

stat /etc/passwd

Für eine kürzere Ausgabe unterstützt GNU stat -c mit einem Formatstring. Hierbei ist %F der Dateityp, %s die Größe in Bytes und %n der Name.

stat -c '%F | %s bytes | %n' /etc/passwd

Das Ergebnis ist eine Zeile wie im folgenden Beispiel. 1234 ist eine illustrative Größe, keine Messung Ihrer Datei; die tatsächliche Größe und die Anzeigesprache können abweichen.

regular file | 1234 bytes | /etc/passwd

Das erste Feld bezeichnet eine reguläre Datei, das mittlere ihre Größe in Bytes und das letzte den untersuchten Pfad. In der vollständigen stat-Ausgabe steht Access für Zugriff, Modify für Inhaltsänderungen und Change für Änderungen des Metadatenstatus. Change ist keine Erstellungszeit. Birth bezeichnet die Erstellungszeit, sofern Dateisystem und Werkzeug diese bereitstellen.

Wenn Sie auf einen symbolischen Link stoßen

Ein symbolischer Link ist ein separater Eintrag, der auf einen anderen Pfad verweist. ls -l zeigt ihn üblicherweise als link -> target. readlink link gibt die im Link gespeicherte Pfadzeichenfolge aus. Wenn diese Zeichenfolge relativ ist, interpretieren Sie sie vom Verzeichnis aus, das den Link enthält, nicht vom aktuellen Verzeichnis Ihrer Shell.

Die Metadaten des Links unterscheiden sich von den Metadaten der Zieldatei. GNU stat untersucht normalerweise den Link selbst; verwenden Sie -L, um ihm zur Zieldatei zu folgen. Das Folgen eines defekten Links kann fehlschlagen. Die Lektion über Links behandelt das Erstellen von Links zum Üben.

Welchen Befehl sollten Sie wählen?

  • Typ und grundlegende Attribute in einer Auflistung: ls -l, oder ls -ld, um den benannten Eintrag selbst zu prüfen.
  • Wahrscheinliches Inhaltsformat: file.
  • Detaillierte Größe, Zeitstempel, Inode und andere Attribute: stat.
  • Pfadzeichenfolge, die in einem symbolischen Link gespeichert ist: readlink.

Für weitere Beispiele lesen Sie die Anleitungen zu file, stat und readlink.

Offizielle Dokumentation

Überprüfen Sie das file(1) Handbuch, die GNU stat Dokumentation und die GNU readlink Dokumentation für Optionen und Ausnahmen.