May*_*hux 38 command-line groups
如何获取给出组名的组 ID GID。
输出将是例如:
Group adm with GID=4
Run Code Online (Sandbox Code Playgroud)
mur*_*uru 49
使用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}'
Run Code Online (Sandbox Code Playgroud)
请注意,对于用户名,这要容易得多。使用id:
$ id -u lightdm
105
Run Code Online (Sandbox Code Playgroud)
hee*_*ayl 32
这可以简单地完成cut:
$ cut -d: -f3 < <(getent group sudo)
27
Run Code Online (Sandbox Code Playgroud)
getent group sudosudo将从/etc/group文件中获取有关组的行:
$ getent group sudo
sudo:x:27:foobar
Run Code Online (Sandbox Code Playgroud)
然后我们可以只取由 分隔的第三个字段:。
如果您需要相应的输出字符串,请使用以下命令替换echo:
$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27
Run Code Online (Sandbox Code Playgroud)
所需的黑客:(仍然可能有更好的答案)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Run Code Online (Sandbox Code Playgroud)
更简单的版本(感谢@AB):
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
Run Code Online (Sandbox Code Playgroud)
例子:
$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo
Group sudo with GID=27
Run Code Online (Sandbox Code Playgroud)