要一次性获取所有本地人类用户的完整信息,需先用dscl . -list /Users | grep -v '^\_'过滤系统账户,再对每个用户执行dscl . -read /Users/用户名提取UID、家目录、Shell等字段,确保UniqueID唯一且NFSHomeDirectory已设置。

您需要在Mac终端中一次性获取所有本地用户的完整信息,包括用户名、UID、主目录路径、默认Shell和所属组,而不是只看到一串名字或漏掉关键字段。
列出所有用户账户名
打开“终端”,输入以下命令并回车:
dscl . -list /Users
该命令输出所有用户账户名,但【会包含系统守护进程账户(如_daemon、_uucp)】,这些不是真实登录用户。若只想看人类用户,需过滤下划线开头的名称。
提取纯人类用户列表
运行这条命令可排除系统账户:
dscl . -list /Users | grep -v '^_'
grep -v '^_' 表示“排除以_开头的行”。这一步很关键——跳过它,你会把后台服务账户误当成普通用户处理。
查看指定用户的完整详情
假设你想查用户名为johnsmith的用户,执行:
dscl . -read /Users/johnsmith
输出包含RealName(真实姓名)、UniqueID(UID)、PrimaryGroupID(主组ID)、NFSHomeDirectory(家目录路径)、UserShell(默认Shell)等字段。其中【UniqueID必须唯一,重复会导致登录失败或权限异常】。
批量导出所有人类用户的UID与家目录
① 先获取干净用户名列表:
users=$(dscl . -list /Users | grep -v '^_')
② 遍历每个用户,提取UID和家目录:
for u in $users; do echo "$u: $(dscl . -read /Users/$u UniqueID NFSHomeDirectory | awk '/UniqueID/ {uid=$2} /NFSHomeDirectory/ {home=$2} END {print uid, home}')"; done
这条命令会逐行输出类似 johnsmith: 501 /Users/johnsmith 的结果。注意:如果某用户没有设置NFSHomeDirectory字段,该行将显示为空——说明该账户可能未被正确初始化。

















