Yanıtlar:
Kullanım getent
yerine elle okuma, işleme grupları ve kullanıcı bilgisi için komutu /etc/passwd
, /etc/groups
vb kendisi kullanan sistem /etc/nsswitch.conf
o kendi bilgi alır ve dosyalarda ayarları diğer kaynaklar tarafından geçersiz kılınmış olabilir yere karar vermek için. getent
bu konfigürasyona uyar. getent
Kaynak ne olursa olsun, dosyalarla aynı biçimde veri yazdırır, böylece çıktıyı ayrıştırdığınız gibi ayrıştırabilirsiniz /etc/passwd
:
getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'
Bir kullanıcı adı için bunun daha kolay olduğunu unutmayın. Kullanım id
:
$ id -u lightdm
105
Bu sadece ile yapılabilir cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
sudo
grup ile ilgili satırı /etc/group
dosyadan alır:
$ getent group sudo
sudo:x:27:foobar
Öyleyse, sınırlandırılmış üçüncü alanı alabiliriz :
.
Çıktı dizesini buna göre istiyorsanız, içinde komut ikameini kullanın 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
, lütfen biraz daha genel =)
GID="$(getent group cdrom | cut -d: -f3)"
?
daha karmaşık cevaplar her zaman takdir edilmektedir - onları dürüstçe okumaktan çok şey öğreniyorum.
Bu sayfaya geldim, çünkü posta grubumun grup kimliğini arıyordum ve bu bilgilerin nerede depolandığını bilmiyordum.
cevapların harika - işte geldiğim basit cevap
def @ fourof4: / home $ kedisi / etc / grubu | grep mail
posta: x: 8:
Kimliği çözmediğini biliyorum ama amacımı yerine getirdi.
Blockquote Bunu deneyin: awk -F: '/ sudo / {"Grup" $ 1 "i GID =" $ 3}' / etc / group ile yazdırın - AB 23 Haziran 15 'te 15:51 Blockquote
Bunu alıntı yaptığımın yanı sıra bahsettiğimi de gördüm .... herkes aşkımı alır - seni özlediysem özür dilerim
beni bu dosyaya yönlendiren buydu.
Teşekkürler ve beni mükemmel bir şekilde istediğiniz şekilde beslemeye devam edin! def
perl
Tek astar kullanarak :
% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27
veya daha kısa (ve daha iyi)
% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
-F
ya da -l
seçenek bunu yapar.
İhtiyaç duyulan bir hack: (hala çok daha iyi bir cevap olabilir)
awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"
Basit versiyon (@ab için teşekkürler):
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
Örnek:
$ 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
den kısa;perl
)