1

date コマンドと who コマンドを使用して、ユーザーがログインした時間と分数を出力するシェル スクリプトを作成しようとしています。24 時間未満であると想定できます。どうすればいいですか?

date コマンドと who コマンドから何らかの方法で時間を抽出し、何らかの方法でそれらを減算すると思いますが、それをどのように実装するかはわかりません。

4

1 に答える 1

3
#!/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
于 2013-02-24T23:03:26.937 に答える