Aqui está uma maneira de fazer isso:
time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
define uma variável time
que você pode usar da seguinte forma:
echo $time
-7595723059
O +%s
informa date
para formatar para seconds since 1970-01-01 00:00:00 UTC
, o que ajuda a nos dar um ponto de partida para fazer as contas em segundos.
Agora também pode ser adicionado a um script com as mesmas variáveis.
:~$ time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
:~$ printf '%dh:%dm:%ds\n' $(($time/3600)) $(($time%3600/60)) $(($time%60))
-2109923h:-12m:-55s
Se você quiser anos: dias: horas: minutos: segundos desde então, seria o seguinte:
printf '%dy:%dd:%dh:%dm:%ds\n' $(($time/60/60/24/365)) $(($time/60/60/24%365)) $(($time/3600%24)) $(($time%3600/60)) $(($time%60))
O que lhe daria resultados como o seguinte:
:~$ time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
:~$ printf '%dy:%dd:%dh:%dm:%ds\n' $(($time/60/60/24/365)) $(($time/60/60/24%365)) $(($time/3600%24)) $(($time%3600/60)) $(($time%60))
-242y:-11d:-7h:-46m:-37s
Espero que isso ajude!