web-dev-qa-db-fra.com

Comment créer un nouveau fichier avec la date?

Je peux créer un nouveau fichier et y mettre la date.

touch example.txt
date >> example.txt

Mais je dois créer le fichier avec la date à partir du moment où j'ai créé le nouveau fichier. Comment puis-je faire cela avec une seule commande?

2
Nonkocka

Utilisez simplement la commande date pour rediriger vers un fichier et celui-ci sera créé:

date > example.txt

Une méthode préférée utiliserait l'opérateur >> append:

date >> example.txt

L'opérateur de redirection (>) et l'opérateur d'ajout (>>) créeront le fichier cible s'il n'existe pas. Vous n'avez jamais besoin de le créer d'abord et d'écrire plus tard.

15
George Udosen

Il convient de noter que, si le problème avec

Je dois créer le fichier avec la date au moment où j'ai créé le nouveau fichier

est dû à des situations de concurrence (par exemple, un processus analyse périodiquement un fichier portant ce nom et s'attend à y trouver une date), même en le faisant

date > example.txt

n'est pas correct, car il y a encore une très petite fenêtre entre le moment où le shell ouvre le fichier et le moment où date écrit ses éléments (qui peuvent également être écrits de manière non atomique).

Dans ce cas, la solution consiste à écrire dans un fichier séparé , puis à effectuer un mv sur le nom de fichier correct:

date > example.txt.tmp
mv example.txt.tmp example.txt

Un déplacement sur le même système de fichiers est garanti comme étant atomique. Ainsi, lorsque example.txt apparaît, il contient déjà le contenu attendu.


Si au contraire, la question est simplement de taper une seule commande, la solution originale est bien sûr la solution la plus simple et la plus simple.

0
Matteo Italia