Estou escrevendo um script para exibir há quanto tempo um usuário está logado.
who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do \echo $(($(($(date +%s) - $(date -d "$time" +%s)))/60)) minutes; done
Como posso fazer essa exibição de horas e minutos? A partir de agora, ele exibe apenas minutos. Preciso que ele exiba, por exemplo, 1 hora(s) e 45 minuto(s) com o(s) incluído(s).
Responder1
Usando data 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
Cortesia: Exibindo segundos como dias/horas/minutos/segundos?