Réponses:
Utilisez la getentcommande pour traiter les groupes et les informations utilisateur, au lieu de les lire manuellement /etc/passwd, /etc/groupsetc. Le système lui-même utilise /etc/nsswitch.confpour décider d'où il obtient ses informations et les paramètres des fichiers peuvent être remplacés par d'autres sources. getentobéit à cette configuration. getentimprime les données, quelle que soit la source, dans le même format que les fichiers, afin que vous puissiez ensuite analyser la sortie de la même manière que vous le feriez /etc/passwd:
getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'
Notez que, pour un nom d'utilisateur, c'est beaucoup plus facile. Utilisation id:
$ id -u lightdm
105
Cela peut être fait simplement avec cut:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudoobtiendra la ligne concernant le sudogroupe du /etc/groupfichier:
$ getent group sudo
sudo:x:27:foobar
Ensuite, nous pouvons simplement prendre le troisième champ délimité par :.
Si vous voulez la chaîne de sortie en conséquence, utilisez la substitution de commandes dans 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, s'il vous plaît un peu plus générique =)
GID="$(getent group cdrom | cut -d: -f3)"?
des réponses plus compliquées sont toujours appréciées - j'apprends tellement en les lisant très honnêtement.
Je suis tombé sur cette page parce que je cherchais l'identifiant de groupe de mon groupe de messagerie et je ne savais pas où ces informations étaient stockées.
vos réponses sont excellentes - voici la réponse simple que j'ai trouvée
def @ fourof4: / home $ cat / etc / group | courrier grep
courrier: x: 8:
Je sais que cela ne trie pas la pièce d'identité, mais cela a servi mon objectif.
Blockquote Essayez ceci: awk -F: '/ sudo / {print "Group" $ 1 "avec GID =" $ 3}' / etc / group - AB 23 juin 15 à 15:51 Blockquote
je vois cela aussi mentionné en plus de celui que j'ai cité .... tout le monde obtient mon amour - désolé si vous m'avez manqué
c'est ce qui m'a guidé vers ce dossier.
Merci et continuez à me nourrir de l'excellent sous toutes les formes que vous souhaitez! def
Utilisation d' perlune doublure:
% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27
ou plus court (et mieux)
% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
-Fou -lfait ça.
Un hack pour le nécessaire: (peut-être qu'il y a peut-être une bien meilleure réponse)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Version plus simple (Merci à @AB):
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
Exemple:
$ 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
awkest plus court queperl=)