Відповіді:
Використовуйте 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)"?
Складніші відповіді завжди оцінюються завжди - я багато чого вчуся з їх читання.
Я зайшов на цю сторінку, тому що шукав ідентифікатор групи моєї поштової групи, і не знав, де зберігається ця інформація.
ваші відповіді чудові - ось простий, який я придумав
def @ fourof4: / home $ cat / тощо / група | греп пошта
пошта: x: 8:
Я знаю, що це не розбирає ідентифікатор, але це моє призначення.
Блок-котик Спробуйте це: awk -F: '/ sudo / {print "Група" $ 1 "з GID =" $ 3} "/ і т.д. / група - AB 23 червня 1515 о 15:51 Блок-котирування
Я бачу, що це згадується крім того, що я цитував .... всі отримують мою любов - вибачте, якщо я сумував за тобою
це те, що мене керувало цим файлом.
Дякую і продовжуй годувати мене чудовим у будь-якій формі, яку ти захочеш! деф
Використання 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або -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=)