Was bewirkt der Befehl 'touch', wenn er auf ein Verzeichnis angewendet wird?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Was bewirkt der Befehl 'touch', wenn er auf ein Verzeichnis angewendet wird?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Antworten:
Wie in der Manpage angegeben , wird hauptsächlich Folgendes verwendet touch
:
Aktualisieren Sie die Zugriffs- und Änderungszeiten jeder DATEI auf die aktuelle Zeit.
So werden die Zugriffs- und Änderungszeiten des Verzeichnisses aktualisiert.
Das Beispiel oben macht nicht deutlich, dass "touch" die Zeit des Verzeichnisses festlegt (die neue Zeit in der Liste war dieselbe wie das Original, einfach weil die Berührung so bald nach dem Erstellen des Verzeichnisses erfolgte). Ja, die Definition von "DATEI" in der Dokumentation enthält Verzeichnisse, sodass Sie ihre Zeitstempel mit touch ändern können, ABER ...
In einigen Situationen können Sie den Zeitstempel eines Verzeichnisses nicht ändern (für einige Arten von remote gemounteten Verzeichnissen), selbst wenn Sie die Berechtigung haben, etwas anderes zu tun. zB diese NFS-Halterung:
$ touch -d "2014-07-02 12:15" /public/test.dir
touch: setting times of ‘/public/test.dir’: Operation not permitted
Außerdem können Probleme auftreten, wenn einige alte Daten auf einigen Servern nicht unterstützt werden, z.
$ mkdir /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir
Das funktioniert:
$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr 1 2014 /Acer/kopies/test.dir
Dies würde in einem lokalen Verzeichnis funktionieren, gibt jedoch ein seltsames Datum unter Samba-Reittieren an:
$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26 60410 /Acer/kopies/test.dir
~~~~~~~~~~~~~
touch
ist ein Standard-Unix-Programm zum Ändern der Zugriffs- und Änderungszeitstempel einer Datei. Es wird auch verwendet, um eine neue leere Datei zu erstellen.Die Single Unix Specification (SUS) gibt an, dass durch Berühren die Zugriffszeiten, Änderungszeiten oder beides für eine Datei geändert werden sollen. Die Datei wird durch einen Pfadnamen identifiziert, der als einzelnes Argument angegeben wird. Außerdem wird angegeben, dass die Datei erstellt und die Zugriffs- und Änderungszeiten wie angegeben festgelegt werden, wenn die identifizierte Datei nicht vorhanden ist. Wenn keine neuen Zeitstempel angegeben sind, verwendet touch die aktuelle Zeit.
-Wikipedia
Sie können detailliertere Informationen zum touch
Befehl (oder zu jedem anderen Befehl, über den Sie wissen möchten) finden, indem Sie den folgenden man
Befehl verwenden:
man touch
Der unmittelbare Grund für die Frage ist die Tatsache, dass die Standardzeitauflösung von ls -l
in Minuten angegeben ist, sodass ein Dateisystemeintrag, der innerhalb derselben Minute berührt wird, in der Standardausgabe genauso angezeigt ls -l
wird.
Die Lösung hierfür wird unter /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp beschrieben
und umfasst im Wesentlichen das Ausführen ls -l --time-style=full-iso
.