Як отримати ім'я активного користувача за допомогою командного рядка в OS X?


Відповіді:


196

оскільки "whoami" застаріло, воно, мабуть, більш сумісне уперед:

id -un

2
У якому сенсі "whoami" застаріло? Хто визнав його застарілим?
Джонатан Леффлер

2
@ Джонатан: Довідкова сторінка для whoamiLeopard підтверджує, що її було замінено на id.
Naaff

Ага! Чому вони змінюють щось, що існувало з часів світанку?
dmckee --- екс-модератор кошеня

29
кому сказати? <boom-chacka>
Кент,

27

Якщо ви хочете відобразити повне ім’я (замість імені користувача), додайте -Fпрапор:

$ id -F
Andrew Havens

1
-F є незаконним варіантом у Mavericks - коли це вперше почало працювати?
Елі Б.

11

хто я

РЕДАГУВАТИ

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


11

Я майже впевнений, що термінал в OS X подібний до unix, тому команда буде такою:

whoami

На даний момент у мене немає mac, тому хтось виправив мене, якщо я помиляюся.

ПРИМІТКА - Службова whoamiпрограма застаріла та еквівалентна id -un. Це дасть вам поточного користувача


10

Через сюди

Перевірка власника / dev / console, здається, працює добре.

stat -f "%Su" /dev/console


1
Це чудово працює, якщо ви ssh'ed в машину і хочете побачити, чи входить користувач в систему локально. Якщо їх немає, команда поверне "root".
Тім Дірборн

4

Якщо ви хочете дізнатись, хто наразі ввійшов у систему:

$ ш
 15:56:14 до 5 днів, 20:58, 6 користувачів, середнє навантаження: 0,43, 0,53, 0,50
КОРИСТУВАЧ TTY ВХІД @ IDLE JCPU PCPU ЩО
мені оч / 2 пт19 1: 03м 0,98 с 0,98 с - / bin / bash
мені оч / 3 09:55 6: 00м 0,43с 0,43с / бен / баш
мені оч / 5 15:56 0,00с 0,23с 0,00св

(Це з системи Linux; форматування в OS X може дещо відрізнятися, але інформація повинна бути приблизно однаковою.)

Сеансів входу може бути кілька; Зрештою, UNIX розроблений як багатокористувацька система.


4

Ви також можете використовувати lognameкоманду з Загального керівництва команд BSD під Linux або MacOS, щоб побачити ім'я користувача поточного користувача, навіть якщо користувач виконує sudoоперацію. Це корисно, наприклад, під час модифікації користувацького crontab під час встановлення загальносистемного пакета з sudo:crontab -u $(logname)

За man logname:

LOGNAME(1)

NAME
    logname -- display user's login name

1
Це, безумовно, найчистіше і найпростіше рішення. Це працює незалежно від того, який користувач виконує команду.
Maxime Viargues

2

Відповідь на запитання не отримана повністю, ІМХО. Я спробую пояснити: у мене є запис crontab, який планує процедуру команди командної оболонки bash, що, в свою чергу, виконує деяке очищення моїх файлів; і, закінчивши, надсилає мені повідомлення за допомогою центру сповіщень OS X (за командою osascript -e 'display notification ...). Якщо хтось (наприклад, моя дружина або моя дочка) перемикає поточного користувача комп'ютера на неї, залишаючи мене у фоновому режимі, сценарій cron не справляється при надсиланні сповіщення.

Отже, хто такий поточний користувач, означає, що деякі інші люди стали ефективним користувачем, залишивши мене на задньому плані ? Do 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

2

Отримати ім’я користувача в терміналі MAC просто ...

Я зазвичай використовую whoamiв терміналі ...

Наприклад, у цьому випадку мені це потрібно було для встановлення сервера Tomcat ...

введіть тут опис зображення



1

Ви також можете отримати його зі змінних середовища, але це, мабуть, не є безпечним, тому я хотів би відповісти на відповідь Ендрю.

printenv USER

Якщо вам потрібно отримати його з програми, наприклад Node, простіше отримати її із змінних середовища, таких як

process.env.USER.


1

Визначте "активний користувач".

Якщо питання полягає в тому, "хто зареєстрований користувач", тоді "хто я" або "хтомі" - це нормально (хоча вони дають різні відповіді - "хтомі" повідомляє лише ім'я користувача; "хто я" повідомляє на терміналі та час входу).

Якщо питання полягає в тому, "який ідентифікатор користувача є ефективним ідентифікатором оболонки", то часто краще використовувати "ідентифікатор". У цьому звіті повідомляється про реальний та ефективний ідентифікатор користувача та ідентифікатор групи, а також про додаткові ідентифікатори груп. Це може мати значення, якщо в оболонці запущено SUID або SGID.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.