Comment obtenir l'ID de groupe GID donnant le nom du groupe.
La sortie serait par exemple:
Group adm with GID=4
Un hack pour le nécessaire: (encore peut-être il y a beaucoup mieux réponse)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Version simplifiée (Merci à @ A.B):
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
Utilisez la commande getent
pour traiter les groupes et les informations utilisateur, au lieu de lire manuellement /etc/passwd
, /etc/groups
etc. Le système lui-même utilise /etc/nsswitch.conf
pour décider d'où il tire ses informations, et les paramètres des fichiers peuvent être remplacés par d'autres sources. getent
obéit à cette configuration. getent
imprime les données, quelle que soit la source, dans le même format que les fichiers, vous pouvez donc analyser la sortie de la même manière que vous analyseriez /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. Utilisez id
:
$ id -u lightdm
105
Ceci peut être fait simplement avec cut
:
$ cut -d: -f3 < <(getent group Sudo)
27
getent group Sudo
obtiendra la ligne concernant le groupe Sudo
à partir du fichier /etc/group
:
$ getent group Sudo
sudo:x:27:foobar
Ensuite, nous pouvons simplement prendre le troisième champ délimité par :
.
Si vous voulez que la chaîne de sortie corresponde, utilisez la substitution de commande dans echo
:
$ echo "Group Sudo with GID="$(cut -d: -f3 < <(getent group Sudo))""
Group Sudo with GID=27
Utiliser Perl
one-liner:
% 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