我在终端中执行了这两个命令:
users
和
dscl . -read /Users/
然后他们告诉我两个不同的结果。第二个给了我一个很长的列表,而第一个只显示了我在 Mac 上的用户名。
当我在 Google 上搜索“在 Mac 上列出用户”时,大多数人会告诉我使用第二个。但是当我执行“man users”时,它显示该命令是“列出当前用户”。
你能告诉我它们之间有什么区别吗?
另外,我如何以 mysql 用户身份执行命令。以下命令不起作用:
mkdir mysqldir --user mysql
答案1
dscl . -read /Users/
不会打印任何特别有趣的东西;你可能指的是dscl . -ls /Users
,它打印出你计算机上定义的用户帐户列表(包括许多通常隐藏的系统帐户)。users
另一方面,打印用户列表当前登录的用户在您的计算机上(通常只有您)。
对于您的第二个问题:您可以使用该sudo
命令以其他用户身份运行命令(例如sudo -u _mysql mkdir mysqldir
)。请注意,这需要管理员权限,并会要求您输入密码进行验证。
答案2
获取所有用户的列表(仅为他们的简称):
dscl . -list /Users
获取特定用户的详细用户信息:
dscl . -read /Users/<username>
获取用户信息中的特定值:
dscl . -read /Users/<username> <key>
例如,,,和。<key>
RecordName
RealName
UniqueID
NFSHomeDirectory
获取详细的用户信息全部用户:
dscl . -readall /Users
获取特定值全部用户信息:
dscl . -readall /Users <key>
-list
希望您注意到和之间的区别-read
。其他优点:-plist
以 XML 形式输出,-search
让您指定键和值,您将获得指示该值所在位置的输出。
2rs2ts:~/ $ dscl . -search /Users RealName "Andrew Garrett" [12:04:07]
2rs2ts RealName = (
"Andrew Garrett"
)
2rs2ts:~/ $ dscl -plist . -read /Users/nobody [12:05:29]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>dsAttrTypeStandard:AppleMetaNodeLocation</key>
<array>
<string>/Local/Default</string>
</array>
<key>dsAttrTypeStandard:GeneratedUID</key>
<array>
<string>FFFFEEEE-DDDD-CCCC-BBBB-AAAAFFFFFFFE</string>
</array>
<key>dsAttrTypeStandard:NFSHomeDirectory</key>
<array>
<string>/var/empty</string>
</array>
<key>dsAttrTypeStandard:Password</key>
<array>
<string>*</string>
</array>
<key>dsAttrTypeStandard:PrimaryGroupID</key>
<array>
<string>-2</string>
</array>
<key>dsAttrTypeStandard:RealName</key>
<array>
<string>Unprivileged User</string>
</array>
<key>dsAttrTypeStandard:RecordName</key>
<array>
<string>nobody</string>
</array>
<key>dsAttrTypeStandard:RecordType</key>
<array>
<string>dsRecTypeStandard:Users</string>
</array>
<key>dsAttrTypeStandard:SMBRID</key>
<array>
<string>501</string>
</array>
<key>dsAttrTypeStandard:UniqueID</key>
<array>
<string>-2</string>
</array>
<key>dsAttrTypeStandard:UserShell</key>
<array>
<string>/usr/bin/false</string>
</array>
</dict>
</plist>
当然,您可以阅读手册页来获取更多信息。
答案3
“用户”命令仅列出当前登录的用户。
描述用户按排序顺序列出当前系统上的用户的登录名,用空格分隔,在一行上。