Su Linux
Basta usare -d
(o --date
) per fare un po' di calcoli con le date:
date -d '+1 hour' '+%F %T'
# ^^^^^^^^^^^^
Ad esempio:
$ date '+%F %T'
2013-04-22 10:57:24
$ date -d '+1 hour' '+%F %T'
2013-04-22 11:57:24
# ^
Su Mac OS
Attenzione, quanto sopra funziona solo su Linux, non su Mac OS.
Su Mac OS, il comando equivalente è
date -v+1H
Linux e macOS in un unico comando
Se hai bisogno di scrivere script che funzionino sia su server Linux che su workstation macOS, puoi silenziare l'errore del primo date
call e 'OR' (||
) con l'altro. Non importa quale viene prima.
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"
Ad esempio, questa funzione bash carica un file su AWS S3 e imposta un Expires:
e Cache-Control:
intestazioni.
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
}
Nello script della shell, se abbiamo bisogno di aggiungere l'ora, usa il comando seguente e il formato della data (PUT TIME before DATE string)
date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%M:%S"
questo produrrà 2017-02-05 13:15:10
Questo non risulta nella data corretta senza UTC non funziona