J'essaie de créer une variable d'horodatage dans un script shell pour rendre la journalisation un peu plus facile. Je veux créer la variable au début du script et la faire imprimer l'heure actuelle à chaque émission echo $timestamp
. Cela s'est avéré plus difficile que je ne le pensais. Voici quelques choses que j'ai essayées:
timestamp="(date +"%T")"
écho imprime (date +"%T")
timestamp="$(date +"%T")"
echo affiche l'heure à laquelle la variable a été initialisée.
D'autres choses que j'ai essayées ne sont que de légères variations qui n'ont pas fonctionné mieux. Quelqu'un sait-il comment accomplir ce que j'essaie de faire?
echo "$(timestamp): something happened"
.date +"%Y-%m-%d_%H-%M-%S"
Si vous souhaitez obtenir l'horodatage Unix, vous devez utiliser:
%T
vous donnera juste le temps; Identique à%H:%M:%S
(via http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ )la source
date
. Cependant, j'ai également voté pour la "bonne" réponse. Je ne cherchais pas cela, mais c'est une meilleure réponse à la question d'origine et c'est aussi très utile pour moi.la source
echo $(date +"%Y-%m-%dT%T.%3N%z")
je ne peut cependant pas faire fonctionner dans un terminal Mac. Comment faire de même sur Mac. MerciLe format ISO 8601 (
2018-12-23T12:34:56
) est plus lisible que l'horodatage UNIX. Cependant, sur certains systèmes d'exploitation, vous ne pouvez pas avoir:
de noms de fichiers. Par conséquent, je recommande d'utiliser quelque chose comme ceci à la place:Vous pouvez utiliser la commande suivante pour obtenir l'horodatage dans ce format:
C'est le format que j'ai vu utiliser par de nombreuses applications. Une autre bonne chose à ce sujet est que si vos noms de fichiers commencent par cela, vous pouvez les trier par ordre alphabétique et ils seront triés par date.
la source
TZ=UTC date +...
peut rendre cela plus portable en utilisant l'horodatage UTCJ'utilise ubuntu 14.04.
La bonne façon dans mon système devrait être
date +%s
.La sortie de
date +%T
est comme12:25:25
.la source
Utilisez la substitution de commande:
la source
Vous pouvez utiliser
Cela livre dans le format
2014-02-01 15:12:35-05:00
Les caractères back-tick (
`
) feront évaluer ce qui est entre eux et le résultat sera inclus dans la ligne.date --help
a d'autres options.la source
touch $timestamp
produira deux fichiers.Les versions récentes de
bash
ne nécessitent pas d'appel au programme externedate
:%(...)T
utilise l'argument correspondant comme horodatage UNIX et le formate selon lestrftime
format -style entre les parenthèses. Un argument de-1
correspond à l'heure actuelle et lorsqu'aucune ambiguïté ne se produit, il peut être omis.la source
Et pour mes collègues européens, essayez d'utiliser ceci:
donnera un format du format: "15-02-2020_19-21-58"
Vous appelez la variable et obtenez la représentation de chaîne comme ceci
la source
srand sans valeur utilise l'horodatage actuel avec la plupart des implémentations Awk.
la source