इस समूह के नाम का समूह आईडी क्या है?


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
एबी

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, कृपया थोड़ा और सामान्य =)
एबी

1
प्रक्रिया प्रतिस्थापन क्यों? इसमें गलत क्या है GID="$(getent group cdrom | cut -d: -f3)"?
कोस

@kos मुझे सब-हेल्दी चीज़ों को चलाना पसंद नहीं है, जब तक कि यह जरूरी नहीं है .....
heemayl

@AB सम्पादित ...
heemayl

लेकिन यह POSIX ...: '(नहीं, सिर्फ मजाक करते हुए, मुझे वास्तव में अंतर नहीं पता था। +1
कोस

1

अधिक जटिल जवाब हमेशा सराहना की जाती है - मैं उन्हें बहुत ईमानदारी से पढ़ने से सीखता हूं।

मैं इस पेज पर आया क्योंकि मैं अपने मेल ग्रुप की ग्रुप आईडी की तलाश कर रहा था, और इस बात से अनजान था कि वह जानकारी कहाँ संग्रहीत थी।

आपके उत्तर बहुत अच्छे हैं - यहाँ वह सरल है जिसके साथ मैं आया था

def @ fourof4: / घर $ बिल्ली / आदि / समूह | grep मेल

मेल: एक्स: 8:

मुझे पता है कि यह आईडी को क्रमबद्ध नहीं करता है, लेकिन इसने मेरा उद्देश्य पूरा किया।

Blockquote यह आज़माएँ: awk -F: '/ sudo / {print "Group" $ 1 "के साथ GID =" $ 3} "/ etc / group - AB Jun 23 '15 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
बहुत यकीन है कि पर्ल आपके लिए विभाजन कर सकता है, मुझे लगता है कि विकल्प -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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.