Ich habe versucht, $(date)
in meinem Bash-Shell-Skript zu verwenden, möchte jedoch das Datum im YYYY-MM-DD
Format.
Wie bekomme ich das?
1112
In bash (> = 4.2) ist es vorzuziehen, den in printf integrierten Datumsformatierer (Teil von bash) anstelle des externen date
(normalerweise GNU-Datums) zu verwenden.
So wie:
# 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
In 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')
Andere verfügbare Datumsformate können vom betrachtet werden Datum Manpages (für externen Nicht-bash bestimmten Befehl):
man date
+%F %T
als Verknüpfung verwenden+%Y-%m-%d %H:%M:%S
. Es genügt zu bemerken , dass einige Dateisysteme (Husten ** HFS) die konvertieren:
zu einem/
, eine Zeichenkette wie das Geben2016-09-15 11/05/00
der mächtig ist verwirrend.date=$(date)
anstelle vondate=`date`
. Verwenden Sie für Ihre privaten Variablen auch keine Großbuchstaben. Variablennamen in Großbuchstaben sind für das System reserviert.Versuchen:
$(date +%F)
quelle
Sie können so etwas tun:
quelle
Sie suchen nach dem ISO 8601- Standard-Datumsformat. Wenn Sie also ein GNU-Datum (oder einen Datumsbefehl, der moderner als 1988 ist) haben, tun Sie einfach Folgendes:
$(date -I)
quelle
date -I
habe nicht funktioniert. Die Installation von GNU-Coreutils mit Brew (das das Präfix 'g' verwendet)gdate -I
hat funktioniert.-I
für GNU dokumentierte Option nicht findendate
, obwohl sie sicher gleichwertig zu sein scheintdate +%F
.Die Ausgabe wäre
2015-06-14
.quelle
%
.kann verwendet werden, um Doppelpunkte (:) dazwischen zu entfernen
Ausgabe
quelle
Mit dem neuesten Bash (Version ≥ 4.2) können Sie das integrierte
printf
Format mit dem Formatmodifikator verwenden%(strftime_format)T
:printf
ist viel schneller alsdate
da es sich um einen eingebauten Bash handelt, währenddate
es sich um einen externen Befehl handelt.Auch
printf -v date ...
ist schneller alsdate=$(printf ...)
da es nicht erforderlich ist, eine Unterschale zu gabeln.quelle
date
wenn Sie ihn bereits in einem Bash-Skript verwenden, da keine zusätzlichen Bibliotheken geladen werden müssen. (* Ich habe auf meinem Linux-Server einen Geschwindigkeitsunterschied von ~ 160x über 1000 Iterationen gemessen)printf -v date
Verzweigen einer Unterschale. Sehr gute Infos !!Immer wenn ich eine solche Aufgabe habe, greife ich zurück
um mich an alle Möglichkeiten zu erinnern.
quelle
Wenn Sie das Jahr in einem Zwei-Zahlen-Format wie 17 anstelle von 2017 haben möchten, gehen Sie wie folgt vor:
quelle
Hier ist x das verwendete Beispieldatum und das Beispiel zeigt sowohl die Formatierung der Daten als auch das Abrufen von Daten an, die 10 Minuten über dem aktuellen Datum liegen.
quelle
Ich benutze die folgende Formulierung:
In der Manpage
date
finden Sie eine Reihe weiterer nützlicher Optionen:quelle
Ich benutze
$(date +"%Y-%m-%d")
oder$(date +"%Y-%m-%d %T")
mit Zeit und Stunden.quelle
Sie können das Datum als Umgebungsvariable festlegen und später verwenden
oder
quelle