Відповіді:
Використовуйте 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
=)