![Linux / Unix 组命令](https://www.alaica.com/wp-content/uploads/linux-40.png)
我是一个 Linux 和 Unix 系统的新用户。如何列出名为 foo 的用户所属的组?如何在 Linux 或类 Unix 系统上显示用户所在的组?
您需要使用 groups 命令在 Linux 或 Unix shell 提示符下显示用户所属的组。让我们详细看看 Unix 和 Linux 组命令示例。
目的
列出用户的组成员身份。
句法
基本语法如下:
显示版本信息并退出到命令提示符。屏幕上会显示帮助选项。您可以在 CLI 中传递 <UserNameHere>,其组成员身份将打印在您的终端上。
$ groups
$ groups <UserNameHere>
$ groups --help
$ groups --version
--version--help
Unix 和 Linux 组命令示例
要简单地显示当前用户的用户组成员身份,请键入:
$ groups
示例输出:
![gif 动画 01:正在运行的组命令](https://www.alaica.com/wp-content/uploads/linux-11.gif)
gif 动画 01:正在运行的组命令
在此示例中,输出 12 个组:staff、everyone、localaccounts、_appserverusr、admin、_appserveradm、_lpadmin、_appstore、_lpoperator、_developer、com.apple.access_screensharing、 和com.apple.access_ssh。您可以使用以下 wc 命令轻松计算总组数:
$ groups | wc -w
示例输出:
12
打印名为“tom”的用户的组成员身份:
$ groups tom
打印系统上所有用户的组成员身份的 Bash 脚本
以下bash for 循环示例将打印/etc/passwd中列出的所有 Linux 用户的组成员身份。例如:
for u in $ ( compgen -u ) do echo "*** Group memembership for $u :" groups " $u " echo done
第一行$(compgen -u) 中的 u使用compgen 命令通过/etc/passwd文件生成系统上所有 Linux 用户名的列表。-u选项告诉 compgen 命令仅列出用户名。第二行echo "*** Group memembership for $u:"打印标题“ *** Group memembership for $u: “。$ u变量是bash for 循环中的当前用户名。第三行groups "$u"使用groups 命令显示当前用户所属的组。第四行echo显示一个空行,用于分隔 bash for 循环设置的每个用户的输出。它看起来是这样的:
root 的组成员身份: 根:根 守护进程的组成员身份: 守护进程:守护进程 bin 的组成员身份: 箱:箱 vivek 的群组成员资格: vivek : vivek adm cdrom sudo dial plugdev lpadmin lxd sambashare sales ... ...
最后一行显示用户“vivek”属于 vivek、adm、cdrom、sudo、dip、plugdev、lpadmin、lxd、sambashare 和 sales 组。
推荐组命令的替代方案
groups 命令已被id 命令废弃。您需要使用以下命令,该命令相当于 id -Gn:
示例输出:
$ id -Gn
$ id -Gn root
Wheel 守护进程 kmem sys tty 操作员 procview procmod 每个员工 certusers localaccounts admin _appstore _lpadmin _lpoperator _developer com.apple.access_screensharing com.apple.access_ssh
加起来
groups 命令显示指定用户名的组成员身份。如果没有指定USERNAME,则会显示当前进程的组成员身份,即当前登录的用户。可以使用echo命令或printf命令获取当前用户名:
当然也可以使用id命令或者whoami 命令也可以打印登录系统并运行该命令的当前 Linux 和 Unix 用户名。例如:
$ echo "The current username is '$USER'."
## OR ##
$ printf "The current username is '%s'.n" "$USER"
$ id
$ whoami
也可以看看
- /etc/group和/etc/passwd文件。
- 使用 man 命令或 help 命令参见以下手册页。例如
$ man 1 id
$ man 1 groups
$ man 5 group