Der unbekannte Befehl – „touch“ der Berührer

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.

kais-universum.de