答案1
解析输出w
可能是比who
。以下是一些代表性数据,显示了登录时间:
$ who
tom pts/1 2015-11-15 06:39 (michener:S.0)
$ w
06:40:10 up 1:04, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
tom pts/1 michener:S.0 06:39 2.00s 0.03s 0.00s w
这些比finger
。由于这是课堂练习,因此解析数据的工作就交给 OP 了。作为提示,awk 不仅可以在一行中打印其字段:
w
通常,可以通过在 awk 脚本中包含一个BEGIN
部分(以设置行号或状态)来处理输出。- 然后,每行的默认操作(只是没有模式的大括号)将增加行号。
- 使用行号,专门处理第一行(在这种情况下跳过它:OP可能需要报告标题的用户数量,但这在OP的示例中没有使用),并跳过带有 的行
USER
。 - 之后,每一行都可以根据OP的需要进行打印。
awk
当没有更多数据时将退出;执行此操作无需知道用户数量。
如果OP被告知使用 who
,它有列出更多信息的选项,例如,
$ who -l -u
LOGIN tty5 2015-11-15 05:36 3670 id=5
LOGIN tty6 2015-11-15 05:36 3671 id=6
LOGIN tty4 2015-11-15 05:36 3669 id=4
LOGIN tty3 2015-11-15 05:36 3668 id=3
LOGIN tty2 2015-11-15 05:36 3667 id=2
LOGIN tty1 2015-11-15 05:36 3666 id=1
tom pts/1 2015-11-15 06:39 00:06 5780 (michener:S.0)
tom pts/2 2015-11-15 06:52 . 6078 (michener:S.1)
再次显示终端名称和登录次数。
答案2
不需要 bash 脚本。您可以使用手指命令。它将提供有关所有登录用户的完整信息。
只需打开终端并输入 Finger 即可。你会得到你需要的。如果您想更多地了解手指可以做什么在这里读