En touch
vous permet de modifier le modification temps et/ou le accès temps. Vous ne pouvez pas régler le changement l'heure de façon arbitraire : elle est fixée à l'heure à laquelle vous modifiez l'une des deux autres heures.
La raison en est que touch
s'appuie sur un appel système qui ne peut faire que les combinaisons mentionnées ci-dessus. Le site code source (dans GNU coreutils) utilise ce chunk :
ok = (fdutimensat (fd, AT_FDCWD, (fd == STDOUT_FILENO ? NULL : file), t,
(no_dereference && fd == -1) ? AT_SYMLINK_NOFOLLOW : 0)
== 0);
qui à son tour (voir source ) appelle futimens
o utimensat
. Ces fonctions sont à la fois POSIX qui note
Après avoir terminé, futimens()
y utimensat()
marque le dernier fichier changement de statut horodatage de la mise à jour.
En changement de statut Le timestamp est ce que vous ne pouvez pas définir arbitrairement.
Les deux fonctions POSIX acceptent timespec
qui fournissent une résolution en nanosecondes. Le système de fichiers de votre ordinateur peut ou non supporter cela (bien que le résultat de stat
indique qu'il peut le faire).
Le style POSIX par défaut -t
est comme indiqué limitée à une résolution d'une seconde. Cependant (toujours POSIX ) le -d
L'option permet de fractions d'une seconde :
YYYY-MM-DDThh:mm:SS[.frac][tz]
GNU coreutils prend en charge cette -d
option, permettant une résolution de l'ordre de la nanoseconde. Le site documentation pour touch
donne comme exemple
--date="2004-02-27 14:19:13.489392193 +0530"
(où --date
est un nom long équivalent à -d
).