Antworten:
Verwenden Sie den getent
Befehl für die Verarbeitung von Gruppen und Benutzerinformationen, anstatt manuell zu lesen /etc/passwd
, /etc/groups
usw. Das System selbst verwendet , /etc/nsswitch.conf
um zu entscheiden , wo sie von ihren Informationen bekommen, und Einstellungen in den Dateien , die von anderen Quellen außer Kraft gesetzt werden können. getent
befolgt diese Konfiguration. getent
Druckt Daten, unabhängig von der Quelle, im selben Format wie die Dateien, sodass Sie die Ausgabe genauso analysieren können, wie Sie es tun würden /etc/passwd
:
getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'
Beachten Sie, dass dies für einen Benutzernamen viel einfacher ist. Verwendung id
:
$ id -u lightdm
105
Das geht ganz einfach mit cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
erhält die Zeile bezüglich der sudo
Gruppe aus der /etc/group
Datei:
$ getent group sudo
sudo:x:27:foobar
Dann können wir einfach das dritte Feld abgrenzen :
.
Wenn Sie die Ausgabezeichenfolge entsprechend wünschen, verwenden Sie die Befehlssubstitution innerhalb von 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
, bitte etwas allgemeiner =)
GID="$(getent group cdrom | cut -d: -f3)"
?
kompliziertere antworten sind immer willkommen - ich lerne so viel, wenn ich sie ganz ehrlich lese.
Ich bin auf diese Seite gekommen, weil ich nach der Gruppen-ID meiner E-Mail-Gruppe gesucht habe und nicht weiß, wo diese Informationen gespeichert sind.
Ihre Antworten sind großartig - hier ist die einfache, die ich mir ausgedacht habe
def @ fourof4: / home $ cat / etc / group | Grep Mail
mail: x: 8:
Ich weiß, dass es die ID nicht aussortiert, aber es hat meinen Zweck erfüllt.
Blockquote Versuchen Sie Folgendes: awk -F: '/ sudo / {print "Group" $ 1 "mit GID =" $ 3}' / etc / group - AB 23. Juni 15 um 15:51 Blockquote
Ich sehe, dass dies auch erwähnt wird, außer dem, den ich zitiert habe. Jeder bekommt meine Liebe. Entschuldigung, wenn ich dich vermisst habe
das hat mich zu dieser Akte geführt.
Danke und füttere mich weiterhin mit dem Ausgezeichneten in jeder Form, die du wünschst! def
Mit perl
Einzeiler:
% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27
oder kürzer (und besser)
% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
-F
oder -l
Option das tut.
Ein Hack für die Nötigen: (vielleicht gibt es noch viel bessere Antworten)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Einfachere Version (Danke an @AB):
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
Beispiel:
$ 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
ist kürzer alsperl
=)