Der Befehl touch wird sicher dem einen oder anderen schon einmal unter gekommen sein. Auch dieser Befehl wird oft missbraucht um z.B. in Shellscripten eine leere Datei anzulegen.
$ touch lorem.txt $ ls -l lorem.txt -rw-r--r-- 1 max max 83 Jun 5 20:35 lorem.txt
legt eine leere Datei lorem.txt an.
Eigentlich wurde der Befehl aber geschrieben um die Zeitstempel von Dateien zu ändern. In Linux sind für den Benutzer drei Zeitstempel üblich:
- atime (access time)
- mtime (modify time)
- ctime (change time)
Der Syntax von touch ist: touch Optionen Datei. Der Befehl zum Anzeigen der Zeitstempel ist stat und den werde ich in einem anderen Beitrag zu dieser Serie ausführlicher vorstellen. Kurz hier jetzt nur, da er im Zusammenhang mit touch unvermeidbar ist. Wir haben eine Datei lorem.txt für die ls -l folgende Ausgabe anzeigt:
$ ls -l lorem.txt -rw-r--r-- 1 max max 83 Jun 5 20:35 lorem.txt
Die Datei kann also vom Besitzer gelesen und editiert werden, es gibt keinen Hardlink auf die Datei, sie gehört dem Besitzer und der Gruppe max, ist 83 Byte groß und besitzt einen Zeitstempel vom 5. Juni 20:35 Uhr. Wenn man stat auf die gleiche Datei loslässt dann bekommt man:
$ stat lorem.txt Datei: lorem.txt Größe: 76 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 809h/2057d Inode: 7365097 Verknüpfungen: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ max) Gid: ( 1000/ max) Zugriff : 2020-06-05 18:14:48.169249552 +0200 Modifiziert: 2020-06-05 20:35:38.139116346 +0200 Geändert : 2020-06-05 20:35:38.139116346 +0200 Geburt : -
Hier sieht man genauere Informationen zum Zeitstempel der Datei und insbesondere die drei möglichen timestamps. Die Optionen für touch sind:
-
-a [CC[YY]MMDDhhmm[SS]] → Zugriffszeit der Datei ändern
-
-m [CC[YY]MMDDhhmm[SS]] → Dateiänderungszeit neu setzen
-
-t [CC[YY]MMDDhhmm[SS]] → Setzt aktuellen Zeitstempel für Datei
Ein einfaches touch auf eine Datei führt dazu, dass alle timestamps auf die aktuelle Zeit gestellt wird:
$ touch lorem.txt $ stat lorem.txt Datei: lorem.txt Größe: 76 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 809h/2057d Inode: 7365097 Verknüpfungen: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ max) Gid: ( 1000/ max) Zugriff : 2020-06-12 20:02:38.290796703 +0200 Modifiziert: 2020-06-12 20:02:38.290796703 +0200 Geändert : 2020-06-12 20:02:38.290796703 +0200 Geburt : -
Wenn man jetzt den timestamp auf ein bestimmtes Datum und Uhrzeit setzen möchte geht das mit den obig erwähnten Optionen. Ein touch -t 199905061214 lorem.txt führt zu folgendem Ergebnis:
$touch -t 199905061214 lorem.txt $ stat lorem.txt Datei: lorem.txt Größe: 76 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 809h/2057d Inode: 7365097 Verknüpfungen: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ max) Gid: ( 1000/ max) Zugriff : 1999-05-06 12:14:00.000000000 +0200 Modifiziert: 1999-05-06 12:14:00.000000000 +0200 Geändert : 2020-06-12 21:58:42.821600792 +0200 Geburt : -
Hier wurden sowohl der timestamp für Zugriff als auch für das Modifizieren auf den gewünschten Wert geändert. Will man jedoch nur den Zeitstempel für den Wert für Modifizieren ändern so erreicht man das durch die zusätzliche Option -m:
$ touch -m -t 200005061214 lorem.txt kai@Marvin:~/scripts$ stat lorem.txt Datei: lorem.txt Größe: 76 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 809h/2057d Inode: 7365097 Verknüpfungen: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ max) Gid: ( 1000/ max) Zugriff : 1999-05-06 12:14:00.000000000 +0200 Modifiziert: 2000-05-06 12:14:00.000000000 +0200 Geändert : 2020-06-12 22:04:22.312011714 +0200 Geburt : -
Der Befehl touch bietet noch mehr Möglichkeiten. So kann man Zeitstempel von einer Datei auf eine andere Datei übertragen:
$ stat ipsum.txt Datei: ipsum.txt Größe: 146 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 809h/2057d Inode: 7365099 Verknüpfungen: 2 Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ max) Gid: ( 1000/ max) Zugriff : 2020-06-11 18:50:30.037729391 +0200 Modifiziert: 2020-06-05 18:18:11.006297528 +0200 Geändert : 2020-06-12 22:11:01.126806416 +0200 Geburt : - touch lorem.txt -r ipsum.txt kai@Marvin:~/scripts$ stat lorem.txt Datei: lorem.txt Größe: 76 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 809h/2057d Inode: 7365097 Verknüpfungen: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ max) Gid: ( 1000/ max) Zugriff : 2020-06-11 18:50:30.037729391 +0200 Modifiziert: 2020-06-05 18:18:11.006297528 +0200 Geändert : 2020-06-12 22:12:16.035328567 +0200 Geburt : -
Hier wurde der Zeitstempel von ipsum.txt auf den Zeitstempel von lorem.txt übertragen.
2 Gedanken zu „Der unbekannte Befehl – „touch“ der Berührer“
Kommentare sind geschlossen.