Я пишу скрипт для отображения времени, в течение которого пользователь находится в системе.
who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do \echo $(($(($(date +%s) - $(date -d "$time" +%s)))/60)) minutes; done
Как сделать так, чтобы это отображало часы и минуты? На данный момент оно отображает только минуты. Мне нужно, чтобы оно отображало, например, 1 час(а) и 45 минут(ы) с включенными (s).
решение1
Использование даты GNU
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
Учтивость : Отображение секунд в формате дней/часов/минут/секунд?