วิธีรับ ID กลุ่ม GID ให้ชื่อกลุ่ม
ตัวอย่างเช่น:
Group adm with GID=4
วิธีรับ ID กลุ่ม GID ให้ชื่อกลุ่ม
ตัวอย่างเช่น:
Group adm with GID=4
คำตอบ:
ใช้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: x: 8:
ฉันรู้ว่ามันไม่ได้เรียงลำดับ ID แต่ทำหน้าที่ตามวัตถุประสงค์ของฉัน
Blockquote ลองสิ่งนี้: awk -F: '/ sudo / {พิมพ์ "กลุ่ม" $ 1 "ด้วย GID =" $ 3}' / etc / group - AB Jun 23 '15 at 15:51 Blockquote
ฉันเห็นสิ่งนี้พูดถึงนอกจากที่ฉันอ้างถึง ... ทุกคนได้รับความรักของฉัน - ขอโทษถ้าฉันคิดถึงคุณ
นี่คือสิ่งที่แนะนำให้ฉันรู้จักกับไฟล์นั้น
ขอขอบคุณและให้อาหารที่ยอดเยี่ยมในทุกรูปแบบที่คุณต้องการ! def
ใช้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
=)