微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在linux下使用shell逐一打印用户列表

我已经开始编写一小段代码来打印所有可用的Linux用户列表。 但是我想把一个一个用户传到我的命令中来一起显示每个用户的详细信息。

列出所有用户

root@bt# getent passwd | grep /home/ | cut -d ':' -f 1 root san postgres

现在我想通过一个用户在下面的命令来显示每个用户的详细信息。

root@bt# chage -l ${user1} ; chage -l ${user2} etcc.

我应该需要用户循环或while循环吗? 任何人可以帮助我build议如何写同样的?

在按下键时停止C ++中的无限循环

Bash脚本继续关键字不断开循环迭代

超时或用户input在Python循环中重复

禁用Windows允许通过批处理循环为USB设备节电

Bash读取txt文件并存储在数组中

Bash脚本:循环执行后总是显示菜单

获取文件中不存在的文件中的值

循环/定时器在C

合并两个文件中的文本,输出到另一个文件

Bash:循环直到命令退出状态等于0

你可以使用while循环:

getent passwd | grep /home/ | cut -d ':' -f 1 | while read user ; do chage -l "$user" done

或for循环:

for user in $(getent passwd | grep /home/ | cut -d ':' -f 1) ; do chage -l "$user" done

或xargs :

getent passwd | grep /home/ | cut -d ':' -f 1 | xargs -n1 chage -l

我会使用xargs ,它在前一个管道的每个输出项目上运行一个命令:

getent passwd | grep /home/ | cut -d ':' -f 1 | sudo xargs -I % sh -c '{ echo "User: %"; chage -l %; echo;}'

sudo用于获取有关所有用户的信息,如果您无法访问此信息,则可以删除sudo

-I %用于指定%是输入项目的占位符(在您的情况下是用户

sh -c '{ command1; command2; ...;}' sh -c '{ command1; command2; ...;}'是由xargs在每个% item上执行的命令; 反过来,命令sh -c允许执行多个shell命令

'{echo“User:%”; chage -l%; echo;}'以%为单位回显当前用户,然后在这用户上运行chage -l ,并用最后的空echo完成输出的格式化

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐