Jak uzyskać nazwę aktywnego użytkownika za pomocą wiersza poleceń w systemie OS X?


Odpowiedzi:


196

Ponieważ 'whoami' jest przestarzałe, prawdopodobnie jest bardziej kompatybilne z przyszłością:

id -un

2
W jakim sensie „whoami” jest przestarzałe? Kto stwierdził, że jest przestarzały?
Jonathan Leffler

2
@Jonathan: Strona podręcznika dla systemu whoamiLeopard potwierdza, że ​​została zastąpiona przez id.
Naaff

Agh! Dlaczego zmieniają coś, co istnieje od zarania dziejów?
dmckee --- kociak ex-moderator

29
Kim jestem żeby mówić? <boom-chacka>
kent

27

Jeśli chcesz wyświetlić pełną nazwę (zamiast nazwy użytkownika), dodaj -Fflagę:

$ id -F
Andrew Havens

1
-F jest nielegalną opcją w Mavericks - kiedy to zaczęło działać?
Eli B.

11

kim jestem

EDYTOWAĆ

Narzędzie whoami zostało przestarzałe przez narzędzie id (1) i jest równoważne id -un. Polecenie id -pjest zalecane do normalnego użytku interaktywnego.


11

Jestem prawie pewien, że terminal w OS X jest taki sam jak unix, więc polecenie wyglądałoby tak:

whoami

W tej chwili nie mam przy sobie Maca, więc ktoś mnie poprawi, jeśli się mylę.

UWAGA - whoaminarzędzie zostało przestarzałe i jest równoważne id -un. Daje ci aktualnego użytkownika


10

Via tutaj

Sprawdzenie właściciela / dev / console wydaje się działać dobrze.

stat -f "%Su" /dev/console


1
Działa to świetnie, jeśli jesteś podłączony do komputera i chcesz sprawdzić, czy użytkownik jest zalogowany lokalnie. Jeśli tak nie jest, polecenie zwróci „root”.
Tim Dearborn

4

Jeśli chcesz wiedzieć, kto jest aktualnie zalogowany do systemu:

$ w
 15:56:14 w górę o 5 dni, 20:58, 6 użytkowników, średnie obciążenie: 0,43, 0,53, 0,50
LOGIN TTY UŻYTKOWNIKA @ IDLE JCPU PCPU CO
me pts / 2 Fri19 1: 03m 0,98s 0,98s - / bin / bash
me pts / 3 09:55 6: 00m 0,43s 0,43s / bin / bash
me pkt / 5 15:56 0,00s 0,23s 0,00sw

(Pochodzi z systemu Linux; formatowanie w systemie OS X może być nieco inne, ale informacje powinny być mniej więcej takie same).

Może być wiele sesji logowania; W końcu UNIX został zaprojektowany jako system dla wielu użytkowników.


4

Możesz także użyć lognamepolecenia z podręcznika BSD General Commands Manual w systemie Linux lub MacOS, aby zobaczyć nazwę użytkownika aktualnie zalogowanego użytkownika, nawet jeśli użytkownik wykonuje sudooperację. Jest to przydatne, na przykład, podczas modyfikowania crontab użytkownika podczas instalowania pakietu dla całego systemu z sudo:crontab -u $(logname)

Na man logname:

LOGNAME(1)

NAME
    logname -- display user's login name

1
To zdecydowanie najczystsze i najłatwiejsze rozwiązanie. Działa niezależnie od tego, który użytkownik wykonuje polecenie.
Maxime Viargues

2

Na pytanie nie ma pełnej odpowiedzi, IMHO. Spróbuję wyjaśnić: Mam wpis w tabeli crontab, który planuje procedurę poleceń powłoki bash, która z kolei wykonuje pewne czyszczenie moich plików; a po zakończeniu wysyła do mnie powiadomienie za pomocą centrum powiadomień OS X (z poleceniem osascript -e 'display notification ...). Jeśli ktoś (np. Moja żona lub córka) przełączy na nią obecnego użytkownika komputera, pozostawiając mnie w tle, skrypt cron zawiedzie podczas wysyłania powiadomienia.

Tak więc, kto jest aktualnym użytkownikiem, to znaczy Czy inne osoby stały się efektywnymi użytkownikami, pozostawiając mnie w tle ? Czy stat -f "%Su" /dev/consolezwraca bieżącą nazwę aktywnego użytkownika ?

Odpowiedź brzmi tak; więc teraz mój skrypt powłoki crontab został zmodyfikowany w następujący sposób:

...
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

uzyskanie nazwy użytkownika w terminalu MAC jest łatwe ...

Zwykle używam whoamiw terminalu ...

Na przykład w tym przypadku potrzebowałem tego do zainstalowania serwera Tomcat ...

wprowadź opis obrazu tutaj



1

Możesz również pobrać go ze zmiennych środowiskowych, ale to prawdopodobnie nie jest bezpieczne, więc poszedłbym z odpowiedzią Andrew.

printenv USER

Jeśli chcesz pobrać go z aplikacji, takiej jak Node, łatwiej jest pobrać go ze zmiennych środowiskowych, takich jak

process.env.USER.


1

Zdefiniuj „aktywnego użytkownika”.

Jeśli pytanie brzmi `` kto jest zalogowanym użytkownikiem '', to `` kim jestem '' lub `` whoami '' jest w porządku (chociaż udzielają różnych odpowiedzi - `` whoami '' zgłasza tylko nazwę użytkownika; `` kim jestem '' '' raportuje na terminalu i czas logowania).

Jeśli pytanie brzmi „który identyfikator użytkownika jest efektywnym identyfikatorem powłoki”, często lepiej jest użyć „id”. Raport ten zawiera informacje na temat rzeczywistego i efektywnego identyfikatora użytkownika i identyfikatora grupy, a także dodatkowych identyfikatorów grup. Może to mieć znaczenie, jeśli w powłoce działa SUID lub SGID.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.