J'ai essayé d'utiliser $(date)
dans mon script shell bash, cependant, je veux la date au YYYY-MM-DD
format.
Comment est-ce que j'obtiens ceci?
1112
Dans bash (> = 4.2), il est préférable d'utiliser le formateur de date intégré de printf (partie de bash) plutôt que l'externe date
(généralement la date GNU).
En tant que tel:
# put current date as yyyy-mm-dd in $date
# -1 -> explicit current date, bash >=4.3 defaults to current time if not provided
# -2 -> start time for shell
printf -v date '%(%Y-%m-%d)T\n' -1
# put current date as yyyy-mm-dd HH:MM:SS in $date
printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1
# to print directly remove -v flag, as such:
printf '%(%Y-%m-%d)T\n' -1
# -> current date printed to terminal
En bash (<4.2):
# put current date as yyyy-mm-dd in $date
date=$(date '+%Y-%m-%d')
# put current date as yyyy-mm-dd HH:MM:SS in $date
date=$(date '+%Y-%m-%d %H:%M:%S')
# print current date directly
echo $(date '+%Y-%m-%d')
D'autres formats de date disponibles peuvent être consultés à partir des pages de manuel de date (pour la commande externe non spécifique à bash):
man date
+%F %T
comme raccourci+%Y-%m-%d %H:%M:%S
. Notez simplement que certains systèmes de fichiers (toux ** HFS) convertiront le:
en un/
, vous donnant une chaîne comme celle2016-09-15 11/05/00
qui est très déroutante.date=$(date)
place dedate=`date`
. N'utilisez pas non plus de majuscules pour vos variables privées; les noms de variables majuscules sont réservés au système.Essayer:
$(date +%F)
la source
Vous pouvez faire quelque chose comme ça:
la source
Vous recherchez le format de date standard ISO 8601 , donc si vous avez une date GNU (ou toute commande de date plus moderne que 1988), faites simplement:
$(date -I)
la source
date -I
n'ai pas fonctionné. Ayant installé GNU coreutils en utilisant brew (qui utilise le préfixe «g»)gdate -I
a fonctionné.-I
option documentée pour GNUdate
, bien que cela semble être équivalent àdate +%F
.La sortie serait
2015-06-14
.la source
%
.peut être utilisé pour supprimer les deux-points (:) entre les deux
production
la source
Avec Bash récent (version ≥ 4.2), vous pouvez utiliser le module intégré
printf
avec le modificateur de format%(strftime_format)T
:printf
est beaucoup plus rapide quedate
puisque c'est un Bash intégré alors quedate
c'est une commande externe.De plus,
printf -v date ...
est plus rapide quedate=$(printf ...)
cela car il ne nécessite pas de forger un sous-shell.la source
date
si vous l'utilisez déjà à partir d'un script bash, car elle n'a pas à charger de bibliothèques supplémentaires. (* J'ai mesuré sur mon serveur linux une différence de vitesse de ~ 160x sur 1000 itérations)printf -v date
ne pas bifurquer. Très bonne info !!Chaque fois que j'ai une tâche comme celle-ci, je retombe
pour me rappeler toutes les possibilités.
la source
si vous voulez l'année dans un format à deux chiffres tel que 17 plutôt que 2017, procédez comme suit:
la source
Ici, x est un exemple de date utilisée, puis un exemple affiche à la fois le formatage des données et l'obtention de dates 10 minutes de plus que la date actuelle.
la source
J'utilise la formulation suivante:
Consultez la page de manuel pour
date
, il existe un certain nombre d'autres options utiles:la source
J'utilise
$(date +"%Y-%m-%d")
ou$(date +"%Y-%m-%d %T")
avec le temps et les heures.la source
Vous pouvez définir la date comme variable d'environnement et plus tard, vous pouvez l'utiliser
ou
la source