这个群名的群id是什么?

这个群名的群id是什么?

如何获取组 ID GID 给出组名。

输出例如如下:

Group adm with GID=4

答案1

使用getent命令来处理群组和用户信息,而不是手动读取/etc/passwd/etc/groups。系统本身使用/etc/nsswitch.conf来决定从哪里获取信息,文件中的设置可能会被其他来源覆盖。getent遵循此配置。getent无论来源如何,都以与文件相同的格式打印数据,因此您可以按照与解析相同的方式解析输出/etc/passwd

getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'

请注意,对于用户名来说,这要容易得多。使用id

$ id -u lightdm
105

答案2

只需这样做即可cut

$ cut -d: -f3 < <(getent group sudo)
27

getent group sudosudo将从文件中获取有关组的行/etc/group

$ getent group sudo
sudo:x:27:foobar

然后我们就可以取以 分隔的第三个字段:

如果您想要相应的输出字符串,请使用命令替换echo

$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27

答案3

需要的破解方法:(也许还有更好的答案)

awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"

更简单的版本(感谢@AB):

awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group 

例子:

$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo 
Group sudo with GID=27

答案4

使用perl单行:

% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27

或更短(更好)

% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27

相关内容