ログインした時間を時間と分で表示します

ログインした時間を時間と分で表示します

ユーザーがログインしている時間を表示するスクリプトを作成しています。

who | grep "$userid" | awk '{print $1,$3,$4}' | while read user time; do \echo $(($(($(date +%s) - $(date -d "$time" +%s)))/60)) minutes; done

これを時間と分で表示させるにはどうしたらいいでしょうか? 今のところは分だけが表示されます。たとえば、(s) を含めて 1 時間 45 分と表示する必要があります。

答え1

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  

礼儀 : 秒を日/時間/分/秒として表示しますか?

関連情報