1

我正在尝试使用 date 和 who 命令编写一个 shell 脚本来打印用户登录的小时数和分钟数。我可以假设它少于 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 回答