tick tock - klockan går

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

tick tock - klockan går

Inlägg av per9000 »

Hej alla glada, fanatisk terminal-nörd som jag är har jag nu porterat ett gammalt kommando från C# till Python och nu till bash. (Antalet rader har gått från många till 3).

tick skriver den nuvaranden tiden (i nanosekunder sedan epokens början) i filen ~/.tick
tock läser den senaste tick-tiden och jämför med nuvarande tid och skriver ut skillnaden.

Bra om man vill mäta tiden på något - då kan man köra

Kod: Markera allt

tick && ngt_som_tar_tid && tock
Om någon vet något bättre sätt är jag mycket nyfiken på det. Jag skulle till exempel gärna ha bara en rad i tock, men jag vill bara läsa filen en gång. (Dessutom vill jag absolut lagra filen så man kan kolla hur lång tid det tar att åka tåg hem eller något annat som kräver att datorn är av).

Kod: Markera allt

tick
------------
#!/bin/bash
date +%s%N > ~/.tick

tock
------------
#!/bin/bash
declare -i NANOS=$((`date +%s%N` - `cat ~/.tick`))
echo $(($NANOS/1000000000)).$(($NANOS%1000000000))
Ciao,
Per
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

SV: tick tock - klockan går

Inlägg av per9000 »

PS: jag har redan hittat en bugg :D
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

SV: tick tock - klockan går

Inlägg av per9000 »

per9000 skrev: [...]
Bra om man vill mäta tiden på något - då kan man köra

Kod: Markera allt

tick && ngt_som_tar_tid && tock
[...]
Ha, ha, ha. Jag behöver verkligen jobba på mina bash-kunskaper. Denna funktionalitet finns redan:

Kod: Markera allt

time ngt_som_tar_tid
*hänger med huvudet i skam*

/Per
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: tick tock - klockan går

Inlägg av Barre »

per9000 skrev:
per9000 skrev: [...]
Bra om man vill mäta tiden på något - då kan man köra

Kod: Markera allt

tick && ngt_som_tar_tid && tock
[...]
Ha, ha, ha. Jag behöver verkligen jobba på mina bash-kunskaper. Denna funktionalitet finns redan:

Kod: Markera allt

time ngt_som_tar_tid
*hänger med huvudet i skam*

/Per
hehe
Det är detta som är tjusningen med datorer... det finns MÅNGA sätta att få samma resultat :)
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

SV: tick tock - klockan går

Inlägg av per9000 »

Någon bash-guru som kan förklara varför detta:

Kod: Markera allt

#!/bin/bash
declare -i NANOS=$((`date +%s%N` - `cat ~/.tick`))
echo $(($NANOS/1000000000)).$(( ${NANOS:(-9)} ))
(i kombination med tick ovan) ibland ger denna error

Kod: Markera allt

>tock
/home/per/bin/tock: line 3: 070024937: value too great for base (error token is "070024937")
Det som händer är att antalet nano-sekunder börjar med en eller flera nolla/or och jag vill skriva ut det som N.012345678 och inte N.12345678 som den gjorde först.

Tacksam för tips,
Per
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: tick tock - klockan går

Inlägg av Konservburk »

Det är för att ett tal som börjar med 0 tolkas som oktalt av $(()),
vilket innebär att du får ett felmeddelande  om 8 eller 9 finns
med i talet. I annat fall får du helt enkelt fel resultat.

Kod: Markera allt

bash$ echo $((08))
bash: 08: value too great for base (error token is "08")
bash$ echo $((010))
8
Plocka bort $(()) så fungerar det bättre.

Kod: Markera allt

echo $((NANOS/1000000000)).${NANOS:(-9)}
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

SV: tick tock - klockan går

Inlägg av per9000 »

supernice  ;D
--
Per Erik Strandberg
Yet Another IT Consultant
Skriv svar

Återgå till "Terminalforum"