我正在尝试实现以下目标:列出我的 Linux 用户,这些用户已在 /etc/passwd 中设置 bin/bash 并将每个用户的信息附加到id [username]
打印语句中,如下所示:
cat /etc/passwd | grep bin/bash | awk -F\: '{print $1";"$(id $1)}'
(这显然行不通;))
我感觉我已经很接近了;我缺少什么?
输出应该是(参见 DavDav 的评论):
User1;uid=1000(User1) gid=1000(User1) groups=1000(User1)
User2;uid=1001(User2) gid=1001(User2) groups=1001(User2)
User3;uid=1002(User3) gid=1002(User3) groups=1002(User3)
答案1
怎么样
</etc/passwd grep bin/bash | cut -d: -f1 | xargs -n1 id
答案2
尝试这个,
awk -F ':' '/bin\/bash/ {printf ($1";"); system("id "$1)}' /etc/passwd
system
将执行命令并将值返回到awk
答案3
这是另一种选择:
for i in $(grep /bin/bash /etc/passwd | awk -F: '{ print $1 }'); do
echo "${i};$(id ${i})"
done
将生成与包含 的grep ... awk ...
行相对应的用户名列表。在循环的每次迭代中,将是这些用户名之一。然后打印用户名,后跟分号,然后是该用户名的输出。/etc/passwd
/bin/bash
for
i
echo
id