ओएस एक्स में कमांड लाइन के माध्यम से मुझे सक्रिय उपयोगकर्ता का नाम कैसे मिलेगा?
ओएस एक्स में कमांड लाइन के माध्यम से मुझे सक्रिय उपयोगकर्ता का नाम कैसे मिलेगा?
जवाबों:
के रूप में 'whoami' obsoleted किया गया है, यह शायद आगे उपयोग करने के लिए संगत है:
id -un
whoami
तेंदुए के लिए मैन पेज पुष्टि करता है कि इसे बदल दिया गया है id
।
संपादित करें
Whoami उपयोगिता आईडी (1) उपयोगिता द्वारा obsoleted किया गया है, और के बराबर है id -un
। id -p
सामान्य इंटरैक्टिव उपयोग के लिए कमांड का सुझाव दिया गया है।
मुझे पूरा यकीन है कि OS X में टर्मिनल यूनिक्स की तरह ही है, इसलिए कमांड होगा:
whoami
मैं इस समय मुझ पर एक मैक नहीं है तो कोई मुझे सही कर रहा है अगर मैं गलत हूँ।
ध्यान दें - whoami
उपयोगिता को मान लिया गया है, और इसके बराबर है id -un
। यह आपको वर्तमान उपयोगकर्ता देगा
के माध्यम से यहाँ
/ Dev / कंसोल के मालिक की जाँच करने से लगता है कि यह अच्छी तरह से काम करता है।
stat -f "%Su" /dev/console
यदि आप जानना चाहते हैं कि वर्तमान में सिस्टम में कौन लॉग इन है:
$ w 15:56:14 5 दिन, 20:58, 6 उपयोगकर्ता, लोड औसत: 0.43, 0.53, 0.50 USER TTY LOGIN @ IDLE JCPU PCPU क्या है me pts / 2 Fri19 1: 03m 0.98s 0.98s - / bin / bash me pts / 3 09:55 6: 00m 0.43s 0.43s / बिन / बैश me pts / 5 15:56 0.00s 0.23s 0.00sw
(यह एक लिनक्स सिस्टम से है; ओएस एक्स पर प्रारूपण थोड़ा भिन्न हो सकता है, लेकिन जानकारी उसी के बारे में होनी चाहिए)
कई लॉगिन सत्र हो सकते हैं; UNIX को एक बहु-उपयोगकर्ता प्रणाली के रूप में डिज़ाइन किया गया है, आखिरकार।
logname
वर्तमान में लॉग इन किए गए उपयोगकर्ता के उपयोगकर्ता नाम को देखने के लिए आप लिनक्स या मैकओएस के तहत बीएसडी जनरल कमांड मैनुअल से भी कमांड का उपयोग कर सकते हैं , भले ही उपयोगकर्ता कोई sudo
ऑपरेशन कर रहा हो। यह उपयोगी है, उदाहरण के लिए, जब सूडो के साथ एक सिस्टम-वाइड पैकेज स्थापित करते समय उपयोगकर्ता के कॉन्टैब को संशोधित किया जाता है:crontab -u $(logname)
प्रति man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
इस सवाल का पूरी तरह से जवाब नहीं दिया गया है, IMHO। मैं यह समझाने की कोशिश करूंगा: मेरे पास एक क्रेस्टब प्रविष्टि है जो एक बैश शेल कमांड प्रक्रिया को शेड्यूल करती है, जो बदले में मेरी फाइलों की कुछ सफाई करती है; और, जब किया जाता है, तो ओएस एक्स अधिसूचना केंद्र (कमांड के साथ ) का उपयोग करके मुझे एक अधिसूचना भेजता है osascript -e 'display notification ...
। यदि कोई (जैसे मेरी पत्नी या मेरी बेटी) कंप्यूटर के वर्तमान उपयोगकर्ता को उसके पास स्विच करता है, तो मुझे पृष्ठभूमि में छोड़कर, अधिसूचना भेजते समय क्रोन स्क्रिप्ट विफल हो जाती है ।
तो, मौजूदा उपयोगकर्ता का मतलब कौन है? क्या कुछ अन्य लोग पृष्ठभूमि में मुझे छोड़कर प्रभावी उपयोगकर्ता बन गए हैं ? क्या stat -f "%Su" /dev/console
वर्तमान सक्रिय उपयोगकर्ता नाम लौटाता है ?
इसका जवाब है हाँ; इसलिए, अब मेरी क्रॉस्टैब शेल स्क्रिप्ट को निम्नलिखित तरीके से संशोधित किया गया है:
...
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
आप इसे पर्यावरण चर से भी प्राप्त कर सकते हैं, लेकिन यह शायद सुरक्षित नहीं है, इसलिए मैं एंड्रयू के जवाब के साथ जाऊंगा।
printenv USER
यदि आपको इसे किसी एप्लिकेशन से पुनर्प्राप्त करने की आवश्यकता है, तो नोड की तरह, इसे पर्यावरण चर से प्राप्त करना आसान है, जैसे कि
process.env.USER
।
'सक्रिय उपयोगकर्ता' को परिभाषित करें।
यदि प्रश्न यह है कि 'उपयोगकर्ता में कौन लॉग इन है', तो 'मैं कौन हूं' या 'कौन यामी' ठीक है (हालांकि वे अलग-अलग उत्तर देते हैं - '' ओयामी '' सिर्फ एक उपयोगकर्ता नाम की रिपोर्ट करता है; '' मैं कौन हूं '' टर्मिनल पर रिपोर्ट करता है और) लॉगिन समय भी)।
यदि प्रश्न 'शेल के लिए कौन सी यूजर आईडी प्रभावी आईडी है', तो अक्सर 'आईडी' का उपयोग करना बेहतर होता है। यह वास्तविक और प्रभावी उपयोगकर्ता आईडी और समूह आईडी और पूरक समूह आईडी पर भी रिपोर्ट करता है। यह मामला तब हो सकता है जब शेल SUID या SGID चला रहा हो।