Hvis du har brug for at finde forskellen mellem to gange , uanset om de adskiller sig ved kun et par sekunder, eller år , kan du gøre dette i GNU versionen af Unix med "date" kommandoen . Men proceduren er ikke intuitiv, som den dato kommandoen ikke direkte giver et flag eller argument for denne procedure. Endvidere findes flere versioner af den dato kommandoen i Unix. Bemærk, at hvad der virker i GNU versionen af dato kommandoen vil ikke arbejde med BSD -version. Unix Epoch
Nøglen til at løse dette problem er at forstå hvordan computeren faktisk holder styr på tiden. En Unix computer gemmer alle gange som antallet af sekunder, der er gået siden Unix Epoch . Unix Epoch er midnat 1. januar 1970.
At få sekunder Siden Unix Epoch
p Du kan få antallet af sekunder siden Unix Epoch til en given dato ved hjælp af en kombination af " + % s" flaget og " - date " kommando . Skrive følgende ind i en shell for at få antallet af sekunder fra Unix Epoch til 11 Marts 2011 : Hej
date - date 2011-03-11 + % s
Resultatet vil være : 1299823200 . Du kan bruge hvilken som helst dato - tid format, du kan tolke med " date" kommandoen i dette script. Du kan skrive "man date " i din shell for at læse om alle de gyldige datoformater .
Løsningen
Som du kan tage en given dato eller tid i en Unix kompatibelt format og konvertere den til sekunderne før eller siden Unix Epoch , kan du finde forskellen mellem to gange ved at trække resultaterne af to af disse kommandoer.
skrive følgende kommandoer i din shell :
d1 = ` date - date 2011-03-11 + % s`
d2 = ` date - date 2010-05-12 + % s`
< p> echo " $ ((( d1 - d2 ))) sekunder forskel "
i de første to linjer , den ` karakter er ikke et citat mærke. Det er en back- kryds. Du kan finde denne karakter til venstre for "1 " tasten på en standard amerikansk tastatur .
Produktionen skal være forskellen mellem de to gange på få sekunder. Hvis du har brug for , kan du konvertere dette til minutter, timer , dage og så videre ved at dividere med antallet af sekunder i et minut , minutter på en time eller timer på en dag.
A Script
Da det ville være en plage at skrive ud af disse tre lange kommandoer hver gang , bør du indkapsle det i et script. ! Åbn din foretrukne teksteditor og indsæt følgende : Hej
# /usr /bin /env bash
d1 = ` date - date $ 1 + % s`
d2 = ` date - date $ 2 + % s`
echo " $ ((( d1 - d2 ))) sekunder forskel "
Dette ændrer et par ting. Den øverste linje lader aktuelle shell vide, at du skriver dette script til at bruge sproget i " bash " shell . Når du erstatter datoerne i de to datokommandoer med "$ 1" og "$ 2 ", kan du passere nye datoer til scriptet , hver gang du kører det. Igen i de første to linjer , kan du bruge back -tick ` , ikke ét tilbud.
Gem dit script med navnet " timediff.sh "og køre kommandoen" chmod + x timediff.sh . "i din shell til at lade Unix vide, at det har tilladelse til at køre dette som et script
Når du gør dette, kan du finde forskellen mellem to datoer og tidspunkter ved at skrive : Hej
. /timediff.sh 2010/09/13 1981/01/14