如何通过群组名称获取群组ID(GID)。
输出示例为:
输出示例为:
Group adm with GID=4
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
cut
命令完成:$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
可以从文件 /etc/group
中获取关于 sudo
组的行:$ getent group sudo
sudo:x:27:foobar
:
分隔的第三个字段。echo
中使用命令替换。$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27
GID="$(getent group cdrom | cut -d: -f3)"
有什么问题吗? - kosgetent group root | cut --delimiter ':' --fields 3
(或者使用短参数)。似乎这种情况并不真正需要进程替换。 - Zelphir Kaltstahlawk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
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
awk -F\: '/sudo/ {print "组 " $1 " 的GID=" $3}' /etc/group
- A.B.% 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
-F
或-l
选项可以实现这个功能。 - muru
awk
жҜ”perl
зҹӯдёҖдәӣ =) - A.B.