date コマンドと who コマンドを使用して、ユーザーがログインした時間と分数を出力するシェル スクリプトを作成しようとしています。24 時間未満であると想定できます。どうすればいいですか?
date コマンドと who コマンドから何らかの方法で時間を抽出し、何らかの方法でそれらを減算すると思いますが、それをどのように実装するかはわかりません。
date コマンドと who コマンドを使用して、ユーザーがログインした時間と分数を出力するシェル スクリプトを作成しようとしています。24 時間未満であると想定できます。どうすればいいですか?
date コマンドと who コマンドから何らかの方法で時間を抽出し、何らかの方法でそれらを減算すると思いますが、それをどのように実装するかはわかりません。
#!/bin/bash
export LANG=C
date_string=$(
who |
sort -k3M -k4n |
awk '{if ($1 ~ user) {print $3, $4, $5;exit}}' user="$1"
)
diff_seconds_between_date_and_now=$((
$(date +%s) - $(date -d "$date_string" +%s)
))
printf "%s %s\n" "$((diff_seconds_between_date_and_now/3600)) hours" \
"$((diff_seconds_between_date_and_now%3600/60)) minutes"
指定されたユーザーの最も古い行を取得します。
使用法 :
$ bash script.bash <USERNAME>
サンプル出力:
$ bash script.bash sputnick
528 hours 6 minutes