Ich schreibe ein Skript, um anzuzeigen, wie lange ein Benutzer angemeldet ist.
who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do \echo $(($(($(date +%s) - $(date -d "$time" +%s)))/60)) minutes; done
Wie kann ich dafür sorgen, dass Stunden und Minuten angezeigt werden? Momentan werden nur Minuten angezeigt. Ich brauche beispielsweise 1 Stunde(n) und 45 Minuten (einschließlich der Minuten).
Antwort1
Verwenden von GNU Date
who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do echo -n "$user ";eval "echo $(date -ud "@$(($(($(date +%s) - $(date -d "$time" +%s)))))" +'$((%s/3600/24)) days %H hours %M minutes %S seconds')"; done
Anstand : Sekunden als Tage/Stunden/Minuten/Sekunden anzeigen?