Answers:
使用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
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
% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27
,请更通用=)
GID="$(getent group cdrom | cut -d: -f3)"
?
总是会收到更复杂的答案-我从诚实地阅读它们中学到了很多东西。
我进入此页面是因为我正在寻找邮件组的组ID,并且不知道该信息的存储位置。
您的答案很棒-这是我想出的简单答案
def @ fourof4:/ home $ cat / etc / group | grep邮件
邮件:x:8:
我知道它不会对ID进行分类,但是它可以达到我的目的。
Blockquote尝试:awk -F:'/ sudo / {print“ Group” $ 1“ with GID =” $ 3}'/ etc / group – 15年6月23日,AB在15:51 Blockquote
我看到除了我引用的内容以外,还提到了这一点。
这就是引导我访问该文件的原因。
谢谢并继续以您希望的任何形式喂给我优秀的食物!def
使用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
-F
or -l
选项可以做到。
需要的技巧:(也许仍然有更好的答案)
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
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
比perl
= 短)