Qu'est-ce que la commande «touche» lorsqu'elle est appliquée à un répertoire?
$ 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
Qu'est-ce que la commande «touche» lorsqu'elle est appliquée à un répertoire?
$ 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
Réponses:
Comme indiqué dans la page de manuel , l'utilisation principale de touch
est la suivante:
Mettez à jour les heures d'accès et de modification de chaque FICHIER à l'heure actuelle.
Il met donc à jour les temps d'accès et de modification du répertoire.
L'exemple en haut ne montre pas clairement que "touch" définit l'heure du répertoire (la nouvelle heure dans la liste était la même que l'original, simplement parce que la touche était si peu de temps après la création du répertoire). . oui, la définition de "FILE" dans la documentation inclut des répertoires, vous pouvez donc utiliser touch pour changer leurs horodatages, MAIS ...
Dans certaines situations, vous ne pouvez pas modifier l'horodatage d'un répertoire (pour certains types de répertoires montés à distance) même si vous avez l'autorisation de faire autre chose. par exemple ce montage NFS:
$ touch -d "2014-07-02 12:15" /public/test.dir
touch: setting times of ‘/public/test.dir’: Operation not permitted
En outre, vous pouvez rencontrer des problèmes avec certaines anciennes dates non prises en charge sur certains serveurs, par exemple:
$ 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
Cela marche:
$ 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
Cela fonctionnerait sur un répertoire local mais donne une date étrange sous les montures Samba:
$ 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
est un programme Unix standard utilisé pour changer les horodatages d'accès et de modification d'un fichier. Il est également utilisé pour créer un nouveau fichier vide.La spécification Single Unix (SUS) spécifie que le toucher doit changer les temps d'accès, les temps de modification, ou les deux, pour un fichier. Le fichier est identifié par un chemin d'accès fourni comme un seul argument. Il spécifie également que si le fichier identifié n'existe pas, le fichier est créé et les heures d'accès et de modification sont définies comme spécifié. Si aucun nouvel horodatage n'est spécifié, appuyez sur utilise l'heure actuelle.
-Wikipédia
Vous pouvez trouver des informations plus détaillées sur la touch
commande (ou toute autre commande que vous souhaitez connaître) en utilisant la man
commande comme ceci:
man touch
La raison immédiate de la question est le fait que la résolution de temps par défaut de ls -l
est en minutes, donc une entrée de système de fichiers touchée dans la même minute s'affichera exactement la même dans la ls -l
sortie par défaut .
La solution à cela est décrite sur /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp
et implique essentiellement l'exécution à la ls -l --time-style=full-iso
place.