Bash:将“id”的输出插入到打印语句中

Bash:将“id”的输出插入到打印语句中

我正在尝试实现以下目标:列出我的 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/bashforiechoid

相关内容