Який ідентифікатор групи цієї назви групи?


27

Як отримати GID ідентифікатора групи із зазначенням назви групи.

Вихід буде, наприклад:

Group adm with GID=4

Відповіді:


41

Використовуйте 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

Гаразд, awkкоротше, ніж perl=)
AB

20

Це можна зробити просто за допомогою 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, будь ласка, трохи більш родовий =)
AB

1
Чому процес заміщення? Що не так GID="$(getent group cdrom | cut -d: -f3)"?
kos

@kos Мені не подобається запускати речі в передплатках, якщо це не обов'язково .....
heemayl

@AB Редаговано ...
heemayl

Але це POSIX ...: '(Ні, просто жартую, я справді не знав різниці. +1
kos

1

Складніші відповіді завжди оцінюються завжди - я багато чого вчуся з їх читання.

Я зайшов на цю сторінку, тому що шукав ідентифікатор групи моєї поштової групи, і не знав, де зберігається ця інформація.

ваші відповіді чудові - ось простий, який я придумав

def @ fourof4: / home $ cat / тощо / група | греп пошта

пошта: x: 8:

Я знаю, що це не розбирає ідентифікатор, але це моє призначення.

Блок-котик Спробуйте це: awk -F: '/ sudo / {print "Група" $ 1 "з GID =" $ 3} "/ і т.д. / група - AB 23 червня 1515 о 15:51 Блок-котирування

Я бачу, що це згадується крім того, що я цитував .... всі отримують мою любов - вибачте, якщо я сумував за тобою

це те, що мене керувало цим файлом.
Дякую і продовжуй годувати мене чудовим у будь-якій формі, яку ти захочеш! деф


0

Використання 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

2
Досить впевнений, Perl може зробити розбиття для вас, я думаю, що варіант -Fабо -lробить це.
муру

0

Злом для потрібних: (все ж, можливо, є набагато краща відповідь)

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

1
Спробуйте так:awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
AB

Дивіться UUOC
kos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.