Quel est le point de la touch
commande? Je sais que je peux créer des fichiers vides avec, mais il en va de même pour echo -n
.
Sinon, pourquoi quelqu'un aurait-il besoin de modifier les horodatages d'un fichier? À moins de créer une fausse impression sur l'âge d'un fichier, je ne vois aucune autre utilisation, et celle-ci n'est pas légitime (de mon point de vue).
command
timestamps
touch
Quora Feans
la source
la source
echo -n > filename
, vous pouvez exécuter les>filename
Unless to create the false impression about the age of a file
. Pas nécessaire fausse impression. Que faire si vous voulez changer l'heure de modification? Cela peut être utile dans les scripts. Ce script dépend fortement de latouch
commande et il est très pratique et simple de l’avoir comme ça.tar
(ou à d’autres archiveurs) quand ils extraient une archive. Généralement, ils définissent l'heure de modification du fichier sur l'heure de l'archive, et non sur l'heure à laquelle l'archive a été extraite, ce qui est une fonctionnalité souhaitable. Puisqu'il est légitime pour un programme en mode utilisateur de créer de faux horodatages, l'argument qui explique pourquoitouch
(ou un autre programme de ligne de commande) ne devrait pas l'autoriser en fonction d'un argument de ligne de commande. L'apprentissage de C ne vous rend pas plus légitime que celui qui écrit unsh
script ;-)age
fichier. Ce serait uncreation
horodatage et cet horodatage n'existe pas pour les fichiers unix.Réponses:
Un des avantages
touch
est qu'il peut spécifier des horodatages arbitraires, toutecho -n
en ayant toujours pour résultat l'heure actuelle.Un exemple d'utilisation légitime consiste à mettre à jour l'horodatage d'un fichier de code source afin qu'un programme similaire
make
considère le fichier source plus récent que son objet compilé et le reconstruise.D'autres utilisations consistent à créer des fichiers fonctionnant uniquement en fonction de leur existence, par exemple
/etc/nologin
, ce qui interdit les connexions, le cas échéant. Je dirais aussi quetouch myfile
c'est une construction plus simple queecho -n >> myfile
, tout en étant plus courte à taper.la source
echo -n
je vois qu'il est écrit "ne pas afficher le retour à la ligne final". Donc, je ne vois pas comment cela peut créer un fichier vide. Pouvez-vous clarifier s'il vous plaît?echo -n
affichera une chaîne vide et ne fera rien en soi. En redirigeant sa sortie via>>
, la sortie vide est ajoutée à un fichier. La redirection entraînera la création du fichier s'il n'existe pas.echo -n
pour une commande qui ne fait rien.echo -n
peut sortir la chaîne "-n" sous certains shells. Si vous avez vraiment besoin d’une commande qui ne fait rien:
ou quitrue
soit une meilleure option,>> myfile
c’est aussi un moyen parfaitement valide de créer le fichier s’il n’existe pas. Bien entendu, tout cela conforte votre réponse selon laquelle vous devriez simplement utiliser "tactile".L'appel système sous-jacent (
utime
) est important pour divers utilitaires, commetar
pouvoir définir les horodatages d'un fichier récemment copié (non taré). Certains utilitaires de sauvegarde peuvent également avoir la possibilité de réinitialiser le dernier accès des fichiers qu'ils ont copiés.Une utilisation légitime de
touch
consiste à créer un fichier avec un horodatage particulier. Un tel fichier "référence" peut ensuite être utilisé par des commandes telles quefind
. Par exemple, pour trouver tous les fichiers plus récemment modifiés que le 1er novembre 2013 (c.-à-d. 2013/11/01) "la source
201311010000
signifie que 1 novembre 2013? Existe-t-il un utilitaire qui me le dira? En d'autres termes, comment puis-je déterminer l'entrée à toucher?20131101
peut être décomposée en2013-11-01
, ou le 1er novembre 2013. Vous pouvez alors supposer que la0000
partie indique une heure spécifique de la journée, dans ce cas 00 heures, 00 minutes. Ou vous pouvez simplement regarder la page de manuel pourtouch
, qui vous dit exactement quel est le format (voir-t
).Le
touch
but principal de la commande est de manipuler les horodatages des fichiers et de créer des fichiers.Exemples
1. créer des fichiers
Remarque: la
total 0
sortie dels -l
est correcte. Cette implémentation dels
affiche le nombre de blocs utilisés par les fichiers lorsqu'ils sont répertoriés. Vous pouvez vous assurer de ce fait en ajoutant le-s
commutateur àls
. Ceci listera les blocs utilisés par chaque fichier. Ici, j'ai ajouté 2 caractères à file1 & file2.Exemple
2. info heure / date d'un fichier - commande stat
Nous pouvons utiliser
touch
pour manipuler les différents timestamps sur un fichier donné.3. extrait de la page de manuel tactile
4. manipuler le temps d'accès
5. manipuler le temps de modification
Vous vous demandez peut-être l'heure de changement (ctime). Cela ne peut pas être manipulé en utilisant
touch
. Cela suit l'heure à laquelle l'une des métadonnées a été touchée dans le fichier. Voir ce Q & A de U & L pour plus de détails, intitulé: Que pouvez-vous faire pour un fichier sans déclencher l'horodatage "Modifier"? .la source
ls -l
dans un répertoire où les fichiers ont une taille de 0, et rien d’autre n’existe encore. Dès que vous donnez une des tailles de fichiers, le total s'affichera avec la quantité de blocs utilisés par les fichiers. Voir mes mises à jour si vous n'êtes pas sûr, j'ai ajouté un exemple.Outre les deux autres très bonnes réponses que vous avez obtenues, un autre usage est, selon vos mots, de
par exemple pour une utilisation dans des schémas de sauvegarde . Vous voudrez peut-être ne pas mettre à jour une sauvegarde avec une nouvelle, car elles sont identiques ou que les modifications ne sont pas pertinentes par rapport au coût de la mise à jour d'une sauvegarde sur une ligne lente vers un hôte distant, par exemple. Pour ce faire, vous avez la possibilité simple de marquer le fichier de sauvegarde avec un horodatage plus récent, sans simuler, mais en déclarant que l'horodatage de validité de ce fichier est maintenant différent.
L'impression concernant l'âge du fichier est maintenant bien fausse, mais sa signification est réelle et légitime.
la source
L'une des utilisations les plus courantes de
touch
- ou du moins de l'habitude d'être - est de déclencher une reconstruction du code.Les outils de construction habituels -
make
et leurs dérivés - essaient de sauvegarder le travail en ne recompilant / reconstruisant pas les fichiers, sauf si l’un des fichiers qui a été créé a été modifié - par exemple, si un fichier .o est plus récent que le .c source, il est généralement prudent de supposer que la source C n’a pas été modifiée depuis sa compilation pour produire ce fichier objet.Mais il y a des moments où vous voulez forcer quelque chose à être reconstruit. Vous pourriez apporter une modification inutile à l'un de ses fichiers source, mais cela risquerait d'endommager accidentellement quelque chose. Au lieu de cela, vous pouvez simplement
touch
créer un fichier, le rendre nouveau sans risquer de modifier son contenu, ce qui suffirait à convaincremake
qu'il est temps de reconstruire tout ce qui dépend de ce fichier.Il y a d'autres utilisations, mais historiquement, c'était le plus important.
la source
touch
c'est aussi mauvais qu'un changement manuel. Pour provoquer une reconstruction, je suggère de supprimer les fichiers.o
de sortie de la source en question.J'ai travaillé avec au moins un framework Web (je ne me souviens plus lequel) qui, en mode de développement, surveillait les fichiers de code source à la recherche de modifications et rechargeait l'application lorsque cela se produisait.
Bien sûr, parfois, vous vouliez qu'il soit rechargé après avoir changé quelque chose qu'il ne regardait pas, auquel cas
touch
son fichier de configuration principal a fait l'affaire.Ainsi, dans le cas général, chaque fois que vous souhaitez démarrer un processus déclenché par des modifications apportées à un fichier, sans modifier réellement le fichier.
la source
Utilisation légitime du toucher:
la source
Une utilisation consiste à corriger l'horodatage d'un fichier mal défini.
Par exemple, dans la plupart des cas, vous copiez un fichier (et dans certains cas, vous pouvez déplacer un fichier), le nouveau fichier ayant un horodatage de l'heure actuelle, plutôt que l'horodatage du fichier d'origine.
Habituellement, ce n'est pas ce qui est souhaité. Touch peut "réparer" ça.
Une autre utilisation consiste à refléter une modification de fichier qui a été annulée en restaurant l'horodatage du fichier tel qu'il était avant les opérations "edit ... undo-edit".
la source
alias cp='cp --preserve=timestamps'
me convient mieux pour PC Land…Une différence importante par rapport à
things
j'aimeecho
(ou même au meilleur> file
comme mentionné par d'autres) est que le toucher ne brisera pas le contenu.> file
va vider un fichier.touch
Ne fera pas. Au lieu de penser à des astuces pour éviter d’endommager le contenu, utilisez simplement le toucher! Quoi qu'il en soit, cela fera moins de travail dans le noyau, car cela ne fonctionnera qu'avec les attributs du fichier sans perdre de temps à préparer réellement un fichier ouvert puis à le fermer.Touch peut probablement modifier l'horodatage, même si le fichier est actuellement verrouillé de manière obligatoire ou facultative, ou s'il est ouvert de manière exclusive. Hmmm, je n'ai jamais testé ou lu à ce sujet ...
la source
>>
ajoutera au lieu de remplacerEn voici un - j’utilise un logiciel appelé SageTV pour enregistrer des émissions télévisées - celles-ci sont souvent enregistrées au format MPEG-2, qui n’est pas un codec très efficace, ni un iPad / iPhone convivial. Je convertis donc les fichiers en fichiers .mp4. Mais lors de la lecture des fichiers, SageTV s'attend à ce que l'horodatage du fichier soit celui du début de l'émission télévisée. Sinon, il bousille la chronologie de l'émission de sorte qu'il n'est pas facile de FF ou de REW. Par conséquent, j'utilise touch pour réinitialiser l'horodatage du fichier .mp4 afin qu'il soit identique à celui du fichier d'origine.
Est-ce légitime?
la source
Souvent, vous pouvez avoir un processus qui change d’utilisateur, comme de la racine -> quelque chose d’autre. Touch peut vous donner la possibilité de créer un fichier dans un emplacement que seul root peut toucher avant que l'application ne commence à s'y connecter en tant qu'autre utilisateur.
la source
Au travail, nous avons des archives de cartes numériques datant de plus de 15 ans. Ces anciennes cartes sont enregistrées dans divers formats tels que PostScript, EMF, PRN, hpgl2, pdf, etc. que la plupart des programmes ne comprennent pas. Ou vous avez besoin d'une douzaine de programmes différents pour les voir tous.
Pour faciliter la recherche et la navigation dans tous ces formats, nous créons des versions jpeg des cartes, puis utilisons touch pour que le fichier jpeg corresponde à l'horodatage du fichier source d'origine, souvent des années après sa création.
Nous pouvons maintenant utiliser un seul programme tel que Picasa pour voir l’ensemble de la bibliothèque et localiser de manière triviale certaines plages de dates. Sans toucher, nous devrions ajouter des métadonnées de date pour chaque image, probablement manuellement, puis rechercher ces chaînes lors de la recherche d'une plage de dates spécifique.
la source
Je ne l'ai pas encore utilisé à cette fin, mais j'ai un script qui lit les fichiers et leurs dates dans un répertoire et les lit pour les utiliser sur une page Web. Si je dois en modifier un, sa date sera modifiée. Je leur ai
touch
demandé de réinitialiser leur commande.la source
Certains scripts d'initialisation comparent l'horodatage d'un fichier de configuration avec leur propre fichier pid. Le résultat décide s'il faut ou non recharger le service en cours d'exécution.
S'il existe une situation dans laquelle vous ne souhaitez pas modifier la configuration mais souhaitez forcer le rechargement, appuyez sur vous aide ici.
la source
J'ai un travail cron qui récupère les modifications d'une base de données survenues entre la dernière exécution du travail et l'exécution en cours. Il produit un fichier XML des modifications qui sont ensuite traitées dans une base de données différente. Il obtient l'heure de la dernière exécution à partir de l'horodatage du fichier de sortie XML. *
Si quelque chose ne va pas dans le traitement du fichier XML, je souhaiterais peut-être répéter l'exécution à partir de la date d'origine et non de la date indiquée sur l'horodatage du nouveau fichier XML.
Le moyen le plus simple de procéder, plutôt que de modifier les scripts appelés etc., consiste à toucher le fichier XML et à forcer l'horodatage à correspondre à la date dont j'ai besoin.
De plus, si je recommence (sans fichier de sortie XML précédent), je peux simplement simuler son existence à l'aide de la touche.
[*] Avant que quelqu'un le signale, je réalise que l'heure à laquelle le travail commence et que l'écriture du fichier XML laisse un intervalle de temps de quelques minutes où des modifications de la base de données pourraient survenir. Le travail s'exécute à un moment où les modifications de la base de données sont extrêmement improbables. C'est mon excuse et j'y tiens :-)
la source