Was ist das Änderungsdatum für Berichte in Verzeichnissen in der Bash-Shell?

7

Wenn ich ls -lin der Bash-Shell ausgeführt werde, wird eine Änderungszeit für Dateien und Verzeichnisse aufgeführt. Wie in diesem Thread erwähnt , spiegelt die Änderungszeit für Verzeichnisse nicht den gesamten Inhalt wider. Es scheint auch nicht von der Änderung des Verzeichnisnamens betroffen zu sein. Was genau spiegelt die Änderungszeit für ein Verzeichnis wider?

Ist es die letzte Änderungszeit einer Datei (oder eines Verzeichnisses) in der obersten Ebene des Verzeichnisses?

Nagel
quelle

Antworten:

9

Beachten Sie, dass ein Verzeichnis unter Unix die darin enthaltenen Dateien nicht "enthält". Es enthält vielmehr Links zu ihnen. link(2)Weitere Informationen finden Sie im Systemaufruf.

Dies bedeutet, dass der "direkte" Inhalt eines Verzeichnisses eine Liste von Dateinamen und entsprechenden i-Nummern ist . Das Änderungsdatum des Verzeichnisses gibt daher an, wann immer sich diese Liste ändert. Operationen, die solche Änderungen verursachen würden, würden Folgendes umfassen, sind aber nicht notwendigerweise darauf beschränkt:

  • Erstellen einer neuen Datei im Verzeichnis
  • Entfernen (oder besser gesagt unlink(2)) einer Datei aus dem Verzeichnis
  • Umbenennen einer Datei im Verzeichnis
  • Verknüpfen einer Datei an anderer Stelle im Verzeichnis
Dolda2000
quelle
3

Stellen Sie sich das Verzeichnis als eine einfache Datei vor, die eine Liste anderer Dateien enthält. Wenn Sie den Inhalt ändern (Dateien umbenennen, enthaltene Dateien hinzufügen oder entfernen), ändert sich die Änderungszeit eines Verzeichnisses.

stant
quelle