如何获取组 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 sudo
sudo
将从文件中获取有关组的行/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