Estoy escribiendo un script para mostrar cuánto tiempo ha iniciado sesión un usuario.
who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do \echo $(($(($(date +%s) - $(date -d "$time" +%s)))/60)) minutes; done
¿Cómo puedo hacer que esto muestre horas y minutos? Por ahora sólo muestra minutos. Necesito que muestre, por ejemplo, 1 hora(s) y 45 minuto(s) con el(los) incluido(s).
Respuesta1
Usando la fecha 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
Cortesía : ¿Mostrar segundos como días/horas/minutos/segundos?