Linux / Befehl / touch / Leere Dateien erstellen und letzte Änderungszeit ändern
In Linux erstellt touch eine leere Datei, wenn sie nicht existiert, und wenn die Datei existiert, werden standardmäßig die Zugriffs- und Änderungszeiten auf die aktuelle Zeit aktualisiert. Der Inhalt vorhandener Dateien wird nicht gelöscht, aber es kann Backups oder Build-Vorgänge beeinflussen, die auf Zeitinformationen angewiesen sind.
Leere Dateien erstellen
Der folgende Befehl erstellt eine leere Datei im aktuellen Verzeichnis, falls example.txt nicht existiert. Die nachfolgenden Beispiele basieren auf touch und stat aus den GNU coreutils. Führen Sie sie in einem separaten leeren Übungsverzeichnis aus, um vorhandene Daten nicht zu beeinträchtigen.
touch example.txt
ls -l example.txt
Eine Datei mit der Größe 0 wird in der Liste erscheinen. Wenn eine Datei mit demselben Namen bereits existiert, wird sie nicht durch eine neue leere Datei überschrieben, sondern die Zeit der bestehenden Datei aktualisiert. Wenn der Name Leerzeichen enthält, setzen Sie ihn in Anführungszeichen wie touch "my notes.txt". Wenn mehrere Namen durch Leerzeichen getrennt aufgelistet sind, wird jeder verarbeitet.
Überprüfung und Aktualisierung der Zeit einer bestehenden Datei
Die Zugriffszeit (atime) einer Datei bezieht sich auf den letzten Zugriff, und die Änderungszeit (mtime) bezieht sich auf die letzte Änderung des Datei Inhalts. Standardmäßig setzt touch example.txt beide Zeiten auf die aktuelle Zeit. Sie können vor und nach der Änderung wie folgt überprüfen.
stat example.txt
touch example.txt
stat example.txt
Vergleichen Sie die Access- und Modify-Einträge in der Ausgabe von stat. Die tatsächliche Ausgabesprache und Anzeigeformat kann je nach Umgebung variieren, und Unterschiede in sehr kurzen Intervallen sind möglicherweise aufgrund der Zeitauflösung des Dateisystems nicht sichtbar.
Die Statusänderungszeit (ctime) hängt mit Änderungen an Metadaten wie Berechtigungen zusammen und ist nicht dasselbe wie die Erstellungszeit. Das Ändern der Zeitinformationen mit touch kann ebenfalls die ctime aktualisieren, aber Sie können die ctime nicht auf einen beliebigen Wert setzen oder die Erstellungszeit ändern. Ob die Zugriffszeit bei jedem Lesen aktualisiert wird, hängt ebenfalls vom Dateisystem und den Mount-Einstellungen ab. Die Bedeutung jeder Zeit können Sie in GNU-Datei-Zeitbeschreibung nachlesen.
Nur die Zugriffszeit oder die Änderungszeit ändern
-a wählt nur die Zugriffszeit aus, und -m wählt nur die Änderungszeit aus. Unten ist ein Beispiel, wie die Änderungszeit einer Übungsdatei auf die aktuelle Zeit geändert und das Ergebnis überprüft wird.
touch -m example.txt
stat example.txt
-a wählt die Zugriffszeit, während -m die Änderungszeit wählt. Es bedeutet nicht, dass die Änderungszeit des Dateistatus erhalten bleibt. Wenn die Datei nicht existiert, wird eine leere Datei erstellt, es sei denn, eine separate Option wird angegeben.
Verwenden Sie eine gewünschte Zeit oder die Zeit einer anderen Datei
Sie können das Datum und die Uhrzeit mit GNU touch -d angeben. Das folgende Beispiel setzt die Zugriffs- und Änderungszeiten der Übungsdatei auf die angegebene Zeit.
touch -d '2024-01-15 10:30:00' example.txt
stat example.txt
Wenn die Zeitzone nicht separat angegeben wird, wird sie gemäß der Umgebungsvariablen TZ oder der Systemzeitzone interpretiert. Überprüfen Sie, dass die Ausgabedaten für Zugriffs- und Änderungszeiten mit den angegebenen Werten übereinstimmen. Die gespeicherten Werte können je nach unterstütztem Bereich und Auflösung des Dateisystems variieren.
Um eine andere Datei als Referenz zu verwenden, nutzen Sie -r. Das folgende Beispiel zeigt den Fall, wenn sowohl reference.txt als auch example.txt im aktuellen Verzeichnis existieren.
touch -r reference.txt example.txt
stat reference.txt example.txt
Setzen Sie die Zugriffs- und Änderungszeiten der Zieldatei auf die Werte der Referenzdatei. Wenn die Referenzdatei nicht existiert, tritt ein Fehler auf, und standardmäßig kann eine leere Datei erstellt werden, wenn die Zieldatei nicht existiert. Detaillierte Optionen finden Sie im GNU touch Handbuch.
Nur die Zeit aktualisieren, ohne eine Datei zu erstellen
-c erstellt keine neue Datei, wenn die angegebene Datei nicht existiert. Der folgende Befehl aktualisiert die Zeit auf die aktuelle Zeit, wenn die Datei bereits existiert, und erstellt sie nicht, wenn sie nicht existiert.
touch -c example.txt
Da es ohne Fehler beendet werden kann, selbst wenn die Datei nicht existiert, sollte nicht nur der Erfolgsstatus dieses Befehls verwendet werden, um das Vorhandensein der Datei zu überprüfen. Um eine neue Datei zu erstellen, sind Schreibberechtigungen für das übergeordnete Verzeichnis erforderlich, und die Berechtigung zum Ändern der Zeit einer vorhandenen Datei hängt vom Besitzer und der Zeit ab, die Sie festlegen möchten. Wenn ein Fehler auftritt, überprüfen Sie den Pfad und die Berechtigungen.




