Par exemple, je souhaite afficher la date et l'heure actuelles au format suivant:
yyyymmddhhmmss
Comment je fais ça? Il semble que la plupart des formats de date viennent avec -
, /
, :
, etc.
Voici:
date +%Y%m%d%H%M%S
Comme man date
dit près du sommet, vous pouvez utiliser la commande date
comme ceci:
date [OPTION]... [+FORMAT]
Autrement dit, vous pouvez lui attribuer un paramètre de format, en commençant par +
. Vous pouvez probablement deviner la signification des symboles de formatage que j'ai utilisés:
%Y
est pour l'année%m
est pour le mois%d
est pour le jourVous pouvez trouver ceci, ainsi que d'autres symboles de formatage dans man date
.
Un exemple simple dans un script shell
#!/bin/bash
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
Sans format de ponctuation: - +% A% m% d% H% M% S
Avec ponctuation: - +% Y-% m-% d% H:% M:% S
Si vous utilisez Bash, vous pouvez également utiliser l'une des commandes suivantes:
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the Shell was invoked
Vous pouvez utiliser l'option -v varname
pour stocker le résultat dans $varname
au lieu de l'imprimer sur la sortie standard:
printf -v varname '%(%Y%m%d%H%M%S)T'
Alors que la commande de date sera toujours exécutée dans un sous-shell (c'est-à-dire dans un processus séparé), printf est une commande intégrée et sera donc plus rapide.
sans ponctuation (comme l'a mentionné @Burusothman):
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
O/P:
20170115072120
avec ponctuation:
current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;
O/P:
2017-01-15 07:25:33
Intéressant/amusant , utilisez expansion des paramètres (nécessite _bash 4.4
_ ou plus récent):
${parameter@operator} - P operator
Le développement est une chaîne qui résulte du développement de la valeur de paramètre comme s'il s'agissait d'une chaîne d'invite.
_$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
_