ฉันจะรับชื่อผู้ใช้ที่ใช้งานอยู่ผ่านทางบรรทัดคำสั่งใน OS X ได้อย่างไร


คำตอบ:


198

เนื่องจาก 'whoami' ถูกเลิกใช้แล้วจึงอาจใช้งานได้มากกว่า:

id -un

2
"whoami" ล้าสมัยในความหมายใด ใครบอกว่าล้าสมัย?
Jonathan Leffler

2
@ Jonathan: หน้าคนสำหรับในยืนยันเสือดาวว่ามันได้ถูกแทนที่ด้วยwhoami id
Naaff

อ๊าก! ทำไมพวกเขาถึงเปลี่ยนแปลงบางสิ่งที่อยู่รอบตัวมาตั้งแต่รุ่งอรุณ?
dmckee --- อดีตผู้ดูแลลูกแมว

29
ใครจะพูด? <boom-chacka>
kent

27

หากคุณต้องการแสดงชื่อเต็ม (แทนชื่อผู้ใช้) ให้เพิ่ม-Fค่าสถานะ:

$ id -F
Andrew Havens

1
-F เป็นตัวเลือกที่ผิดกฎหมายใน Mavericks - สิ่งนี้เริ่มทำงานครั้งแรกเมื่อใด
Eli B.

11

ฉันเป็นใคร

แก้ไข

ยูทิลิตี้ whoami ถูกยกเลิกโดยยูทิลิตี้ id (1) และเทียบเท่ากับid -un. คำสั่งid -pนี้แนะนำสำหรับการใช้งานแบบโต้ตอบตามปกติ


11

ฉันค่อนข้างมั่นใจว่าเทอร์มินัลใน OS X นั้นเหมือนกับยูนิกซ์ดังนั้นคำสั่งจะเป็น:

whoami

ตอนนี้ฉันไม่มี Mac ให้ใครสักคนแก้ไขฉันถ้าฉันผิด

หมายเหตุ - whoamiยูทิลิตี้นี้ล้าสมัยแล้วและเทียบเท่ากับid -un. มันจะทำให้คุณเป็นผู้ใช้ปัจจุบัน


10

ผ่านที่นี่

การตรวจสอบเจ้าของ / dev / console ดูเหมือนจะทำงานได้ดี

stat -f "%Su" /dev/console


1
วิธีนี้ใช้งานได้ดีหากคุณเข้าสู่เครื่องและต้องการดูว่าผู้ใช้เข้าสู่ระบบภายในหรือไม่ หากไม่เป็นเช่นนั้นคำสั่งจะส่งคืน "root"
Tim Dearborn

4

หากคุณต้องการทราบว่าใครกำลังเข้าสู่ระบบ:

$ w
 15:56:14 ขึ้น 5 วัน 20:58 ผู้ใช้ 6 คนโหลดเฉลี่ย: 0.43, 0.53, 0.50
ผู้ใช้เข้าสู่ระบบ TTY @ IDLE JCPU PCPU WHAT
ฉัน pts / 2 ศ. 19 1: 03m 0.98s 0.98s - / bin / bash
ฉัน pts / 3 09:55 6: 00m 0.43s 0.43s / bin / bash
me pts / 5 15:56 0.00s 0.23s 0.00sw

(มาจากระบบ Linux การจัดรูปแบบบน OS X อาจแตกต่างกันเล็กน้อย แต่ข้อมูลควรจะเหมือนกัน)

อาจมีเซสชันการเข้าสู่ระบบหลายครั้ง UNIX ได้รับการออกแบบมาให้เป็นระบบที่มีผู้ใช้หลายคน


4

คุณยังสามารถใช้lognameคำสั่งจาก BSD General Commands Manual ภายใต้ Linux หรือ MacOS เพื่อดูชื่อผู้ใช้ที่ล็อกอินอยู่แม้ว่าผู้ใช้จะดำเนินsudoการก็ตาม สิ่งนี้มีประโยชน์เช่นเมื่อแก้ไข crontab ของผู้ใช้ในขณะที่ติดตั้งแพ็คเกจทั้งระบบด้วย sudo:crontab -u $(logname)

ต่อman logname:

LOGNAME(1)

NAME
    logname -- display user's login name

1
นี่เป็นวิธีแก้ปัญหาที่สะอาดและง่ายที่สุด ใช้งานได้ไม่ว่าผู้ใช้จะเรียกใช้คำสั่งใดก็ตาม
Maxime Viargues

2

คำถามยังไม่ได้รับคำตอบอย่างสมบูรณ์ IMHO ฉันจะพยายามอธิบาย: ฉันมีรายการ crontab ที่กำหนดเวลาขั้นตอนคำสั่ง bash shell ซึ่งจะทำการล้างไฟล์ของฉัน และเมื่อเสร็จแล้วจะส่งการแจ้งเตือนถึงฉันโดยใช้ศูนย์การแจ้งเตือน OS X (พร้อมคำสั่งosascript -e 'display notification ...) หากมีใครบางคน (เช่นภรรยาหรือลูกสาวของฉัน) เปลี่ยนผู้ใช้คอมพิวเตอร์ปัจจุบันเป็นเธอทิ้งฉันไว้เบื้องหลังสคริปต์ cron จะล้มเหลวเมื่อส่งการแจ้งเตือน

ดังนั้นผู้ใช้ปัจจุบันคือใครหมายความว่ามีคนอื่นที่กลายเป็นผู้ใช้ที่มีประสิทธิภาพทิ้งฉันไว้เบื้องหลังหรือไม่? ทำstat -f "%Su" /dev/consoleผลตอบแทนในปัจจุบันผู้ใช้ที่ใช้งานชื่อ?

คำตอบคือใช่ ดังนั้นตอนนี้สคริปต์เชลล์ crontab ของฉันได้รับการแก้ไขด้วยวิธีต่อไปนี้:

...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
  'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi

2

การรับชื่อผู้ใช้ในเครื่อง MACนั้นง่ายมาก ...

ฉันมักใช้whoamiในเทอร์มินัล ...

ตัวอย่างเช่นในกรณีนี้ฉันต้องการสิ่งนั้นเพื่อติดตั้งTomcat Server ...

ป้อนคำอธิบายภาพที่นี่



1

คุณสามารถดึงข้อมูลจากตัวแปรสภาพแวดล้อมได้เช่นกัน แต่นั่นอาจไม่ปลอดภัยดังนั้นฉันจะตอบคำถามของ Andrew

printenv USER

หากคุณต้องการดึงข้อมูลจากแอปเช่น Node การดึงข้อมูลจากตัวแปรสภาพแวดล้อมเช่น

process.env.USER.


1

กำหนด 'ผู้ใช้ที่ใช้งานอยู่'

หากคำถามคือ 'ใครคือผู้ใช้ที่เข้าสู่ระบบ' แสดงว่า 'ฉันเป็นใคร' หรือ 'whoami' ก็ใช้ได้ (แม้ว่าจะให้คำตอบที่แตกต่างกันก็ตาม - 'whoami' รายงานเพียงชื่อผู้ใช้; 'ฉันคือใคร' รายงานบนเทอร์มินัลและ เวลาเข้าสู่ระบบด้วย)

หากคำถามคือ 'ID ผู้ใช้ใดเป็น ID ที่มีประสิทธิภาพสำหรับเชลล์' ก็มักจะใช้ 'id' รายงานนี้เกี่ยวกับ ID ผู้ใช้และ ID กลุ่มที่แท้จริงและมีประสิทธิภาพและใน ID กลุ่มเสริมด้วย สิ่งนี้อาจสำคัญว่าเชลล์กำลังเรียกใช้ SUID หรือ SGID

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.