Как я могу получить имя активного пользователя через командную строку в OS X? - PullRequest
54 голосов
/ 09 июля 2009

Как получить имя активного пользователя через командную строку в OS X?

Ответы [ 11 ]

129 голосов
/ 09 июля 2009

, поскольку 'whoami' устарел, возможно, он более совместим с прямым использованием:

id -un
23 голосов
/ 30 сентября 2015

Если вы хотите отобразить полное имя (вместо имени пользователя), добавьте флаг -F:

$ id -F
Andrew Havens
8 голосов
/ 09 июля 2009

Whoami

EDIT

Утилита whoami устарела с помощью утилиты id (1) и эквивалентна id -un. Команда id -p предлагается для обычного интерактивного использования.

7 голосов
/ 09 июля 2009

Через здесь

Проверка владельца / dev / console, кажется, работает хорошо.

stat -f "%Su" /dev/console

6 голосов
/ 09 июля 2009

Я почти уверен, что терминал в OS X похож на unix, поэтому команда будет выглядеть так:

whoami

В данный момент у меня нет макинтоша, поэтому кто-то поправит меня, если я ошибаюсь.

3 голосов
/ 09 июля 2009

Если вы хотите узнать, кто в данный момент вошел в систему:

$ <a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/w.1.html" rel="nofollow noreferrer">w</a>
 15:56:14 up 5 days, 20:58,  6 users,  load average: 0.43, 0.53, 0.50
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
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       pts/5     15:56    0.00s  0.23s  0.00s w

(Это из системы Linux; форматирование в OS X может немного отличаться, но информация должна быть примерно такой же.)

Может быть несколько сеансов входа в систему; В конце концов, UNIX спроектирован как многопользовательская система.

2 голосов
/ 21 июня 2018

получить имя пользователя в MAC-терминал просто ...

Я обычно использую whoami в терминале ...

Например, в этом случае мне нужно было установить Tomcat Server ...

enter image description here

2 голосов
/ 02 декабря 2015

Вопрос не был полностью дан ответ, ИМХО. Я попытаюсь объяснить: у меня есть запись в crontab, которая планирует командную процедуру оболочки bash, которая, в свою очередь, выполняет некоторую очистку моих файлов; и, когда закончите, отправляет мне уведомление , используя центр уведомлений 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
1 голос
/ 21 сентября 2018

Вы также можете использовать команду logname из Руководства по основным командам BSD под Linux или MacOS, чтобы увидеть имя пользователя, вошедшего в систему в данный момент, даже если пользователь выполняет операцию sudo. Это полезно, например, при изменении пользовательского crontab при установке общесистемного пакета с помощью sudo: crontab -u $(logname)

За man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
1 голос
/ 09 июля 2009

Определить «активный пользователь».

Если вопрос «кто вошел в систему», тогда «кто я» или «whoami» - это нормально (хотя они дают разные ответы - «whoami» сообщает только имя пользователя; на терминале и времени входа тоже).

Если вопрос заключается в том, «какой идентификатор пользователя является эффективным идентификатором оболочки», то часто лучше использовать «идентификатор». Это сообщает о действительном и эффективном идентификаторе пользователя и идентификаторе группы, а также о дополнительных идентификаторах группы. Это может иметь значение, если оболочка работает с SUID или SGID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...