小智 20
人类用户的 UID 从 1000 开始,因此您可以使用该事实来过滤掉非人类用户:
cut -d: -f1,3 /etc/passwd | egrep ':[0-9]{4}$' | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)
这将从 中剪切第一个(用户名)和第三个(UID)冒号分隔的字段/etc/passwd,然后过滤以冒号和四位数字结尾的结果行,然后从中剪切第一个(用户名)字段,为您留下一个列表UID 介于 1000 和 9999 之间的用户。
如果您的系统上有超过 9000 个用户,这将失败 - 但有必要将结果限制为 4 位 UID,以免捕获nobody(UID 65534)。
Oli*_*Oli 16
这几乎完成了公认的答案,只是在一个命令而不是三个命令中:
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
并且感谢评论中的Karel,nobody用户也被过滤掉了。
小智 12
我个人喜欢只使用:
ls /home
Run Code Online (Sandbox Code Playgroud)
诚然,这不是用户列表,而是他们的主目录列表。系统上当前现有的人类用户的主目录位于 中/home,但您也可能会看到已删除的过去用户的主目录。
这适用于我的目的,也可能适用于您的目的。例如,如果您要删除一个已不存在的用户帐户 ( nonexistent-user) 并运行命令
sudo deluser nonexistent-userRun Code Online (Sandbox Code Playgroud)
它只会告诉您该用户不存在。