Jede Datei in Linux ist mit Zeitstempeln verknüpft, die die Zeit des letzten Zugriffs, die Zeit der letzten Änderung und die Zeit der letzten Änderung angeben.
Immer wenn wir eine neue Datei erstellen oder eine vorhandene Datei oder ihre Attribute ändern, werden diese Zeitstempel automatisch aktualisiert.
Der Touch-Befehl wird verwendet, um diese Zeitstempel zu ändern (Zugriffszeit, Änderungszeit und Änderungszeit einer Datei).
1. Erstellen Sie eine leere Datei mit Touch
Sie können eine leere Datei mit dem Touch-Befehl erstellen. Das folgende Beispiel erstellt eine neue Null-Byte-Datei mit dem Namen tgs.txt.
$ touch tgs.txt
Sie können auch die Option -c verwenden, um das Erstellen neuer Dateien zu vermeiden. Wenn Sie die Option -c verwenden und eine Datei nicht existiert, erstellt touch die Datei nicht.
$ touch -c a.txt
Befehle wie der Befehl ls und der Befehl find verwenden diese Zeitstempelinformationen zum Auflisten und Suchen von Dateien.
Sie können auch mehr als 1 Datei mit einem einzigen Berührungsbefehl erstellen. Das folgende Beispiel erstellt 4 Dateien mit den Namen a, b, c und d.
$ touch a b c d
2. Ändern Sie die Zugriffszeit der Datei mit -a
Wir können die Zugriffszeit einer Datei mit der Option -a ändern. Standardmäßig wird die aktuelle Systemzeit verwendet und das atime-Feld aktualisiert.
Bevor der Touch-Befehl ausgeführt wird:
$ stat tgs.txt File: `tgs.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 394283 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/lakshmanan) Gid: ( 1000/lakshmanan) Access: 2012-10-18 23:58:21.663514407 +0530 Modify: 2012-10-18 23:58:21.663514407 +0530 Change: 2012-10-18 23:58:21.663514407 +0530
$ touch -a tgs.txt
Nach dem obigen Touch-Befehl (Bitte beachten Sie, dass die Zugriffszeit geändert wird):
$ stat tgs.txt File: `tgs.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 394283 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/lakshmanan) Gid: ( 1000/lakshmanan) Access: 2012-10-19 00:08:23.559514525 +0530 Modify: 2012-10-18 23:58:21.663514407 +0530 Change: 2012-10-19 00:08:23.559514525 +0530
3. Ändern Sie die Änderungszeit der Datei mit -m
Sie können die Änderungszeit einer Datei mit der Option -m ändern.
$ touch -m *.o
Die obige Methode kann verwendet werden, um die mtime aller obj-Dateien zu ändern, wenn das Dienstprogramm make verwendet wird.
HINWEIS:Es ist nicht möglich, die ctime mit dem Touch-Befehl
zu ändern4. Explizite Einstellung der Zugriffs- und Änderungszeit mit -t und -d
Anstatt den aktuellen Zeitstempel zu nehmen, können Sie die Zeit explizit angeben, indem Sie die Optionen -t und -d verwenden.
Das Format für die Angabe von -t ist [[CC]YY]MMDDhhmm[.SS]
$ touch -t [[CC]YY]MMDDhhmm[.SS]
Im Folgenden wird das obige Format erläutert:
- CC – Gibt die ersten beiden Ziffern des Jahres an
- YY – Gibt die letzten beiden Ziffern des Jahres an. Wenn der Wert von YY zwischen 70 und 99 liegt, wird angenommen, dass der Wert der CC-Ziffern 19 ist. Wenn der Wert von YY zwischen 00 und 37 liegt, wird angenommen, dass der Wert der CC-Ziffern 20 ist Es ist nicht möglich, das Datum über den 18. Januar 2038 hinaus einzustellen.
- MM – Gibt den Monat an
- TT – Gibt das Datum an
- hh – Gibt die Stunde an
- mm – Gibt die Minute an
- SS – Gibt die Sekunden an
Zum Beispiel:
$ touch -a -m -t 203801181205.09 tgs.txt
Überprüfen Sie die obige Änderung mit dem Befehl stat:
$ stat tgs.txt File: `tgs.txt' Size: 3 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 394283 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/lakshmanan) Gid: ( 1000/lakshmanan) Access: 2038-01-18 12:05:09.000000000 +0530 Modify: 2038-01-18 12:05:09.000000000 +0530 Change: 2012-10-19 00:40:58.763514502 +0530
Sie können auch einen String verwenden, um die Zeit zu ändern
Ein weiteres Beispiel:
$ touch -d "2012-10-19 12:12:12.000000000 +0530" tgs.txt
Für Entwickler ist der Touch-Befehl sehr hilfreich, wenn Sie mit Makefiles arbeiten
5. Kopieren Sie den Zeitstempel aus einer anderen Datei mit -r
Sie können auch eine Datei als Referenz nehmen und die Zeit für andere Dateien aktualisieren, sodass beide Dateien die gleiche Zeit enthalten.
Das folgende Touch-Befehlsbeispiel aktualisiert den Zeitstempel der Datei a.txt mit dem Zeitstempel der Datei tgs.txt.
$ touch a.txt -r tgs.txt