Ответы:
Используйте 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 / etc / group | grep mail
почта: х: 8:
Я знаю, что это не сортирует ID, но это служило моей цели.
Blockquote Попробуйте это: awk -F: '/ sudo / {print "Группа" $ 1 "с GID =" $ 3}' / etc / group - 23 июня '15 AB в 15:51 Blockquote
я вижу это упомянутое кроме того, что я цитировал .... каждый получает мою любовь - извините, если я скучал по вам
это то, что привело меня к этому файлу.
Спасибо и продолжайте кормить меня отличным в любой форме, которую вы пожелаете! Защита
Использование 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
=)