Unter Linux
Verwenden Sie einfach -d
(oder --date
), um etwas mit den Daten zu rechnen:
date -d '+1 hour' '+%F %T'
# ^^^^^^^^^^^^
Zum Beispiel:
$ date '+%F %T'
2013-04-22 10:57:24
$ date -d '+1 hour' '+%F %T'
2013-04-22 11:57:24
# ^
Unter Mac OS
Achtung, das obige funktioniert nur unter Linux, nicht unter Mac OS.
Unter Mac OS lautet der entsprechende Befehl
date -v+1H
Linux und macOS in einem einzigen Befehl
Wenn Sie Skripte schreiben müssen, die sowohl auf Linux-Servern als auch auf macOS-Workstations funktionieren, können Sie den Fehler des ersten date
stumm schalten aufrufen und mit 'ODER' verknüpfen (||
) mit dem anderen. Es spielt keine Rolle, was zuerst kommt.
date -u -d "+${max_age}Seconds" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || \
date -u -v "+${max_age}S" +"%Y-%m-%dT%H:%M:%SZ"
Beispielsweise lädt diese Bash-Funktion eine Datei in AWS S3 hoch und setzt einen Expires:
und Cache-Control:
Kopfzeilen.
s3_upload_cache_control(){
local max_age_seconds="${1}" ;shift # required
local bucket_path="${1}" ;shift # required
local filename="${1}" ;shift # required
local remote_filename="/${1:-${filename}}" # optional
local fmt="+%Y-%m-%dT%H:%M:%SZ"
aws s3 cp \
"${filename}" \
"s3://${bucket_path}${remote_filename}" \
--expires "$( \
date -u -d "+${max_age_seconds}Seconds" $fmt 2>/dev/null || \
date -u -v "+${max_age_seconds}S" $fmt )" \
--cache-control max-age=$max_age,public \
--acl public-read
}
Wenn wir im Shell-Skript Zeit hinzufügen müssen, verwenden Sie den folgenden Befehl und das Datumsformat (PUT TIME before DATE string)
date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%M:%S"
dies wird 2017-02-05 13:15:10
ausgeben
Dies führt nicht zu einem korrekten Datum, ohne UTC funktioniert es nicht