1 votes

Pourquoi `date` n'accepte-t-il pas sa propre sortie par défaut ?

Sur mon système actuel, par défaut date sorties :

$ date
Fri 29 Jan 22:04:26 GMT 2016

Cependant, si j'essaie de réintroduire des dates de ce format dans le système d'information de l'UE, je ne pourrai pas le faire. date le résultat est "date invalide" :

$ date -d "$(date)"
date: invalid date ‘Fri 29 Jan 22:06:14 GMT 2016’

Je réalise que je peux choisir manuellement un format qui date comprendra :

$ date -d "@$(date +%s)"
Fri 29 Jan 22:08:03 GMT 2016

Mais ce qui m'intéresse, c'est de savoir pourquoi il sort un format qu'il n'accepte pas en retour.

1voto

Je viens de passer environ deux heures à chercher cette réponse qui me turlupine depuis des années et je l'ai enfin trouvée !!!

Par défaut date produit une date dans le format de la locale actuelle, comme par exemple en_GB.UTF-8 o en_AU.UTF-8 o de_DE.UTF-8 etc.

Votre locale par défaut semble être similaire à la mienne et affiche les dates au format :

date_fmt "%a %e %b %H:%M:%S %Z %Y"

Malheureusement, c'est l'un des rares formats que la commande date ne peut pas comprendre. Cependant, si Peut comprendre un format très similaire

date_fmt "%a %e %b %Y %H:%M:%S %Z"

"Fri 29 Jan 2016 22:04:26 GMT" Travaux

"Fri 29 Jan 22:04:26 GMT 2016" Ne le fait pas

Pourquoi les paramètres linguistiques en_GB.UTF-8 et en_AU.UTF-8, très couramment utilisés, utilisent un format qui date ne sait pas lire Je ne sais pas mais il est très facile de le modifier pour qu'il ne vous dérange plus, du moins jusqu'à ce que vous réinstalliez votre système ou que vos définitions soient écrasées par une mise à jour trop zélée >:-(

Comment personnaliser le format de date de votre région en trois étapes

J'ai trouvé les informations suivantes ici :

1. Vérifiez la locale que vous utilisez

Vérifiez d'abord la locale utilisée par votre système pour le format de l'heure et de la date.

$ locale
LANG=en_AU.UTF-8
LANGUAGE=en_AU
LC_CTYPE="en_AU.UTF-8"
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_COLLATE="en_AU.UTF-8"
LC_MONETARY=en_AU.UTF-8
LC_MESSAGES="en_AU.UTF-8"
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
LC_ALL=

Notez le LC_TIME= entrée. Le mien est anglais australien : en_AU.UTF-8 le vôtre pourrait être en_GB_UTF-8

2. Modifier la définition de la locale

Ouvrez un terminal et éditez la définition de la locale appropriée

$ sudo nano /usr/share/i18n/locales/{LC_Time}

par exemple

$ sudo nano /usr/share/i18n/locales/en_AU

Faites défiler la page jusqu'à la section LC_TIME, voici la mienne :

LC_TIME
abday       "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"
day         "Sunday";/
            "Monday";/
            "Tuesday";/
            "Wednesday";/
            "Thursday";/
            "Friday";/
            "Saturday"
abmon       "Jan";"Feb";/
            "Mar";"Apr";/
            "May";"Jun";/
            "Jul";"Aug";/
            "Sep";"Oct";/
            "Nov";"Dec"
mon         "January";/
            "February";/
            "March";/
            "April";/
            "May";/
            "June";/
            "July";/
            "August";/
            "September";/
            "October";/
            "November";/
            "December"
d_t_fmt     "%a %d %b %Y %T %Z"
d_fmt       "%d//%m//%y"
t_fmt       "%T"
am_pm       "AM";"PM"
t_fmt_ampm  "%I:%M:%S %p"
date_fmt    "%a %e %b %Y %H:%M:%S %Z"
week 7;19971130;1
END LC_TIME

Tout ce que vous devez changer est le date_fmt entrada

J'ai changé le mien de : date_fmt "%a %e %b %H:%M:%S %Z %Y" a date_fmt "%a %e %b %Y %H:%M:%S %Z"

Enregistrez le fichier et quittez l'éditeur

3 Régénérer votre locale

Vous recompilez vos fichiers de définition de locale avec :

$ sudo locale-gen

C'est ça ! Maintenant, le date devrait par défaut vous donner la sortie dans un format qu'elle peut elle-même accepter nativement comme entrée

$ date -d "$(date)"
Mon 17 Aug 2020 17:58:37 AWST

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X