ฉันจะรับชื่อผู้ใช้ที่ใช้งานอยู่ผ่านทางบรรทัดคำสั่งใน OS X ได้อย่างไร
ฉันจะรับชื่อผู้ใช้ที่ใช้งานอยู่ผ่านทางบรรทัดคำสั่งใน OS X ได้อย่างไร
คำตอบ:
เนื่องจาก 'whoami' ถูกเลิกใช้แล้วจึงอาจใช้งานได้มากกว่า:
id -un
whoami
id
หากคุณต้องการแสดงชื่อเต็ม (แทนชื่อผู้ใช้) ให้เพิ่ม-F
ค่าสถานะ:
$ id -F
Andrew Havens
แก้ไข
ยูทิลิตี้ whoami ถูกยกเลิกโดยยูทิลิตี้ id (1) และเทียบเท่ากับid -un
. คำสั่งid -p
นี้แนะนำสำหรับการใช้งานแบบโต้ตอบตามปกติ
ฉันค่อนข้างมั่นใจว่าเทอร์มินัลใน OS X นั้นเหมือนกับยูนิกซ์ดังนั้นคำสั่งจะเป็น:
whoami
ตอนนี้ฉันไม่มี Mac ให้ใครสักคนแก้ไขฉันถ้าฉันผิด
หมายเหตุ - whoami
ยูทิลิตี้นี้ล้าสมัยแล้วและเทียบเท่ากับid -un
. มันจะทำให้คุณเป็นผู้ใช้ปัจจุบัน
หากคุณต้องการทราบว่าใครกำลังเข้าสู่ระบบ:
$ 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 ได้รับการออกแบบมาให้เป็นระบบที่มีผู้ใช้หลายคน
คุณยังสามารถใช้logname
คำสั่งจาก BSD General Commands Manual ภายใต้ Linux หรือ MacOS เพื่อดูชื่อผู้ใช้ที่ล็อกอินอยู่แม้ว่าผู้ใช้จะดำเนินsudo
การก็ตาม สิ่งนี้มีประโยชน์เช่นเมื่อแก้ไข crontab ของผู้ใช้ในขณะที่ติดตั้งแพ็คเกจทั้งระบบด้วย sudo:crontab -u $(logname)
ต่อman logname
:
LOGNAME(1)
NAME
logname -- display user's login name
คำถามยังไม่ได้รับคำตอบอย่างสมบูรณ์ 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
มีสองวิธี -
whoami
หรือ
echo $USER
คุณสามารถดึงข้อมูลจากตัวแปรสภาพแวดล้อมได้เช่นกัน แต่นั่นอาจไม่ปลอดภัยดังนั้นฉันจะตอบคำถามของ Andrew
printenv USER
หากคุณต้องการดึงข้อมูลจากแอปเช่น Node การดึงข้อมูลจากตัวแปรสภาพแวดล้อมเช่น
process.env.USER
.
กำหนด 'ผู้ใช้ที่ใช้งานอยู่'
หากคำถามคือ 'ใครคือผู้ใช้ที่เข้าสู่ระบบ' แสดงว่า 'ฉันเป็นใคร' หรือ 'whoami' ก็ใช้ได้ (แม้ว่าจะให้คำตอบที่แตกต่างกันก็ตาม - 'whoami' รายงานเพียงชื่อผู้ใช้; 'ฉันคือใคร' รายงานบนเทอร์มินัลและ เวลาเข้าสู่ระบบด้วย)
หากคำถามคือ 'ID ผู้ใช้ใดเป็น ID ที่มีประสิทธิภาพสำหรับเชลล์' ก็มักจะใช้ 'id' รายงานนี้เกี่ยวกับ ID ผู้ใช้และ ID กลุ่มที่แท้จริงและมีประสิทธิภาพและใน ID กลุ่มเสริมด้วย สิ่งนี้อาจสำคัญว่าเชลล์กำลังเรียกใช้ SUID หรือ SGID