ओएस एक्स में कमांड लाइन के माध्यम से मुझे सक्रिय उपयोगकर्ता का नाम कैसे मिलेगा?


जवाबों:


196

के रूप में 'whoami' obsoleted किया गया है, यह शायद आगे उपयोग करने के लिए संगत है:

id -un

2
What हूमी ’किस अर्थ में है? किसने इसे अप्रचलित घोषित किया है?
जोनाथन लेफ़लर

2
@ जोनाथन: whoamiतेंदुए के लिए मैन पेज पुष्टि करता है कि इसे बदल दिया गया है id
नाफ़ जूल

आह! वे क्यों कुछ बदल रहे हैं जो समय की सुबह के बाद से आसपास रहे हैं?
dmckee --- पूर्व-संचालक

29
कौन कहे? <बूम-chacka>
केंट

27

यदि आप पूरा नाम प्रदर्शित करना चाहते हैं (उपयोगकर्ता नाम के बजाय), तो -Fझंडा जोड़ें :

$ id -F
Andrew Havens

1
-एफए Mavericks में एक अवैध विकल्प है - यह पहली बार कब काम करना शुरू हुआ?
एली बी।

11

मैं कौन हूँ

संपादित करें

Whoami उपयोगिता आईडी (1) उपयोगिता द्वारा obsoleted किया गया है, और के बराबर है id -unid -pसामान्य इंटरैक्टिव उपयोग के लिए कमांड का सुझाव दिया गया है।


11

मुझे पूरा यकीन है कि OS X में टर्मिनल यूनिक्स की तरह ही है, इसलिए कमांड होगा:

whoami

मैं इस समय मुझ पर एक मैक नहीं है तो कोई मुझे सही कर रहा है अगर मैं गलत हूँ।

ध्यान दें - whoamiउपयोगिता को मान लिया गया है, और इसके बराबर है id -un। यह आपको वर्तमान उपयोगकर्ता देगा


10

के माध्यम से यहाँ

/ Dev / कंसोल के मालिक की जाँच करने से लगता है कि यह अच्छी तरह से काम करता है।

stat -f "%Su" /dev/console


1
यदि आप किसी मशीन में ssh'ed हैं और यह देखना चाहते हैं कि कोई उपयोगकर्ता स्थानीय रूप से लॉग ऑन है या नहीं। यदि वे नहीं हैं, तो कमांड "रूट" वापस कर देगा।
टिम डियरबॉर्न

4

यदि आप जानना चाहते हैं कि वर्तमान में सिस्टम में कौन लॉग इन है:

$ 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 को एक बहु-उपयोगकर्ता प्रणाली के रूप में डिज़ाइन किया गया है, आखिरकार।


4

lognameवर्तमान में लॉग इन किए गए उपयोगकर्ता के उपयोगकर्ता नाम को देखने के लिए आप लिनक्स या मैकओएस के तहत बीएसडी जनरल कमांड मैनुअल से भी कमांड का उपयोग कर सकते हैं , भले ही उपयोगकर्ता कोई sudoऑपरेशन कर रहा हो। यह उपयोगी है, उदाहरण के लिए, जब सूडो के साथ एक सिस्टम-वाइड पैकेज स्थापित करते समय उपयोगकर्ता के कॉन्टैब को संशोधित किया जाता है:crontab -u $(logname)

प्रति man logname:

LOGNAME(1)

NAME
    logname -- display user's login name

1
यह निश्चित रूप से सबसे साफ और सबसे आसान उपाय है। यह काम करता है कोई फर्क नहीं पड़ता कि उपयोगकर्ता कमांड क्या कर रहा है।
मैक्सिमे वायार्गेट्स

2

इस सवाल का पूरी तरह से जवाब नहीं दिया गया है, 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

2

मैक टर्मिनल में उपयोगकर्ता नाम प्राप्त करना आसान है ...

मैं आमतौर पर टर्मिनलwhoami में उपयोग करता हूं ...

उदाहरण के लिए, इस मामले में, मुझे टॉमकैट सर्वर स्थापित करने की आवश्यकता थी ...

यहाँ छवि विवरण दर्ज करें



1

आप इसे पर्यावरण चर से भी प्राप्त कर सकते हैं, लेकिन यह शायद सुरक्षित नहीं है, इसलिए मैं एंड्रयू के जवाब के साथ जाऊंगा।

printenv USER

यदि आपको इसे किसी एप्लिकेशन से पुनर्प्राप्त करने की आवश्यकता है, तो नोड की तरह, इसे पर्यावरण चर से प्राप्त करना आसान है, जैसे कि

process.env.USER


1

'सक्रिय उपयोगकर्ता' को परिभाषित करें।

यदि प्रश्न यह है कि 'उपयोगकर्ता में कौन लॉग इन है', तो 'मैं कौन हूं' या 'कौन यामी' ठीक है (हालांकि वे अलग-अलग उत्तर देते हैं - '' ओयामी '' सिर्फ एक उपयोगकर्ता नाम की रिपोर्ट करता है; '' मैं कौन हूं '' टर्मिनल पर रिपोर्ट करता है और) लॉगिन समय भी)।

यदि प्रश्न 'शेल के लिए कौन सी यूजर आईडी प्रभावी आईडी है', तो अक्सर 'आईडी' का उपयोग करना बेहतर होता है। यह वास्तविक और प्रभावी उपयोगकर्ता आईडी और समूह आईडी और पूरक समूह आईडी पर भी रिपोर्ट करता है। यह मामला तब हो सकता है जब शेल SUID या SGID चला रहा हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.