我正在向用户显示显示名称,登录日期和时间及其默认的Bash shell。我可以让每个人打印,但是我找不到找到将其逐行显示的方法。
这是我迄今为止尝试过的。我已经尝试过使用该管道,但到目前为止,将它们都放入变量中是最近的事情。
#!/bin/bash
x="$(who | tr -s [:space:] | cut -d' ' -f1,3,4)"
y="$(cat /etc/passwd | tr -s [:print:] | cut -d':' -f7)"
echo $x $y
对于每个用户,我必须显示以下内容:
username date of login time of login default bash shell
更新: 其他问题的答案将单个字符串组合在一起,这个问题是在询问如何将WHO命令的多行与用户默认的bash shell(同样是多行)组合在一起。这就是为什么我在这里问。
我的示例输出是显示用户名,登录时间和日期以及每个登录用户的默认bash shell,例如who
命令(所以我基本上想使用who
命令,从中切出我想要的内容,然后将用户的默认bash shell添加到末尾)。我有两个命令可以实现这一点,但是我需要将默认的bash shell添加到“ who”命令显示的每个用户上。现在,该程序将打印出所有已登录的用户,然后将其全部打印出来后,将打印默认的shell。
答案 0 :(得分:1)
这是一次快速而肮脏的尝试。
who |
while read -r name _ time date _; do
printf "%-12s %-14s %-14s %s\n" \
"$name" "$time" "$date" \
"$(getent passwd "$name" | cut -d: -f7)"
done
我正在猜测字段是什么以及您想要的列的宽度; who
工具的输出非常依赖于系统。