Jawaban:
Gunakan getent
perintah untuk memproses grup dan informasi pengguna, daripada membaca secara manual /etc/passwd
, /etc/groups
dll. Sistem itu sendiri digunakan /etc/nsswitch.conf
untuk memutuskan dari mana informasi itu didapat, dan pengaturan dalam file mungkin ditimpa oleh sumber lain. getent
patuhi konfigurasi ini. getent
mencetak 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
Ini bisa dilakukan dengan cut
:
$ cut -d: -f3 < <(getent group sudo)
27
getent group sudo
akan mendapatkan baris mengenai sudo
grup dari /etc/group
file:
$ 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
% echo "Group cdrom with GID="$(cut -d: -f3 < <(getent group sudo))"" Group cdrom with GID=27
, tolong sedikit lebih generik =)
GID="$(getent group cdrom | cut -d: -f3)"
?
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
Menggunakan perl
one-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
-F
atau -l
melakukan itu.
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
awk -F\: '/sudo/ {print "Group " $1 " with GID=" $3}' /etc/group
awk
lebih pendek dariperl
=)