Odpowiedzi:
Użyj getentpolecenia dla grup i przetwarzania informacji o użytkowniku, zamiast ręcznie czytania /etc/passwd, /etc/groupsitd. Sam system używa /etc/nsswitch.confsię zdecydować gdzie robi swoje informacje od i ustawienia w plikach może być zastąpiona przez inne źródła. getentprzestrzega tej konfiguracji. getentdrukuje dane, bez względu na źródło, w tym samym formacie co pliki, dzięki czemu można następnie przeanalizować dane wyjściowe w taki sam sposób, jak /etc/passwd:
getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'
Pamiętaj, że dla nazwy użytkownika jest to o wiele łatwiejsze. Użyj id:
$ id -u lightdm
105
Można to po prostu zrobić za pomocą cut:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudootrzyma wiersz dotyczący sudogrupy z /etc/grouppliku:
$ getent group sudo
sudo:x:27:foobar
Następnie możemy wziąć trzecie pole ograniczone przez :.
Jeśli chcesz odpowiednio ciąg wyjściowy, użyj podstawienia polecenia w ciągu 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, proszę trochę bardziej ogólny =)
GID="$(getent group cdrom | cut -d: -f3)"?
zawsze doceniane są bardziej skomplikowane odpowiedzi - tak wiele uczę się z ich czytania całkiem uczciwie.
Przyszedłem na tę stronę, ponieważ szukałem identyfikatora grupy mojej grupy pocztowej i nie wiedziałem, gdzie te informacje są przechowywane.
twoje odpowiedzi są świetne - oto prosta, którą wymyśliłem
def @ fourof4: / home $ cat / etc / group | grep mail
mail: x: 8:
Wiem, że nie rozwiązuje to problemu, ale spełniło moje zadanie.
Blockquote Wypróbuj: awk -F: '/ sudo / {print "Group" 1 $ with GID = "$ 3}' / etc / group - AB 23 czerwca 2015 o 15:51 Blockquote
widzę to również wspomniane poza tym, które zacytowałem ... wszyscy dostają moją miłość - przepraszam, jeśli tęskniłem
to doprowadziło mnie do tego pliku.
Dzięki i kontynuuj karmienie mnie doskonałym w dowolnej formie! def
Korzystanie z perljednej linijki:
% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27
lub krótszy (i lepszy)
% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
-Flub to -lrobi.
Hack dla potrzebujących: (wciąż może jest o wiele lepsza odpowiedź)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Prostsza wersja (dzięki @AB):
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
Przykład:
$ 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
awkjest krótszy niżperl=)