Apa id grup dari nama grup ini?

27

Cara mendapatkan ID grup GID dengan memberikan nama grup.

Outputnya akan misalnya:

Group adm with GID=4
Maythux
sumber

Jawaban:

41

Gunakan getentperintah untuk memproses grup dan informasi pengguna, daripada membaca secara manual /etc/passwd, /etc/groupsdll. Sistem itu sendiri digunakan /etc/nsswitch.confuntuk memutuskan dari mana informasi itu didapat, dan pengaturan dalam file mungkin ditimpa oleh sumber lain. getentpatuhi konfigurasi ini. getentmencetak data, apa pun sumbernya, dalam format yang sama dengan file, sehingga Anda dapat mem-parsing output dengan cara yang sama seperti Anda mem-parsing /etc/passwd:

getent group sudo | awk -F: '{printf "Group %s with GID=%d\n", $1, $3}'

Perhatikan bahwa, untuk nama pengguna, ini jauh lebih mudah. Gunakan id:

$ id -u lightdm
105
muru
sumber
Oke, awklebih pendek dari perl=)
AB
20

Ini bisa dilakukan dengan cut:

$ cut -d: -f3 < <(getent group sudo)
27

getent group sudoakan mendapatkan baris mengenai sudogrup dari /etc/groupfile:

$ getent group sudo
sudo:x:27:foobar

Lalu kita bisa mengambil bidang ketiga dibatasi oleh :.

Jika Anda menginginkan string output yang sesuai, gunakan substitusi perintah di dalam echo:

$ echo "Group sudo with GID="$(cut -d: -f3 < <(getent group sudo))""
Group sudo with GID=27
heemayl
sumber
% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27, tolong sedikit lebih generik =)
AB
1
Mengapa proses substitusi? Ada apa dengan ini GID="$(getent group cdrom | cut -d: -f3)"?
kos
@kos Saya tidak suka menjalankan hal-hal dalam subkulit kecuali adalah suatu keharusan .....
heemayl
@ AB Diedit ...
heemayl
Tapi itu POSIX ...: '(Tidak, hanya bercanda, saya benar-benar tidak tahu bedanya. +1
kos
1

jawaban yang lebih rumit selalu dihargai - saya belajar banyak dari membacanya dengan cukup jujur.

Saya membuka halaman ini karena saya mencari id grup dari grup surat saya, dan tidak mengetahui di mana informasi itu disimpan.

jawaban Anda luar biasa - inilah jawaban sederhana yang saya buat

def @ fourof4: / home $ cat / etc / group | grep mail

surat: x: 8:

Saya tahu itu tidak memilah-milah ID, tetapi melayani tujuan saya.

Blockquote Coba ini: awk -F: '/ sudo / {print "Group" $ 1 "dengan GID =" $ 3}' / etc / group - AB 23 Jun 15 '15 jam 15:51 Blockquote

saya melihat ini juga disebutkan selain yang saya kutip .... semua orang mendapatkan cintaku - maaf jika aku merindukanmu

inilah yang menuntun saya ke file itu.
Terima kasih dan terus memberi saya makanan terbaik dalam bentuk apa pun yang Anda inginkan! def

def
sumber
0

Menggunakan perlone-liner:

% perl -ne '@elements=(split /:/); printf "Group %s with GID=%s\n",$elements[0],$elements[2]' <<< $(getent group sudo)
Group sudo with GID=27

atau lebih pendek (dan lebih baik)

% perl -F/:/ -ane 'printf "Group %s with GID=%s\n",$F[0],$F[2]' <<< $(getent group sudo)
Group sudo with GID=27
AB
sumber
2
Cukup yakin perl dapat melakukan pemisahan untuk Anda, saya pikir opsi -Fatau -lmelakukan itu.
muru
0

Peretasan untuk yang dibutuhkan: (mungkin masih ada jawaban yang jauh lebih baik)

awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep "group-name"

Versi lebih sederhana (Terima kasih kepada @AB):

awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group 

Contoh:

$ awk -F\: '{print "Group " $1 " with GID=" $3}' /etc/group | grep sudo 
Group sudo with GID=27
Maythux
sumber
1
Coba ini:awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
AB
Lihat UUOC
kos