Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?

94

Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?

Lawrence Johnston
la source

Réponses:

194

comme 'whoami' est obsolète, il est probablement plus compatible avec les versions ultérieures à utiliser:

id -un
Kent
la source
2
En quel sens «whoami» est-il obsolète? Qui l'a déclaré obsolète?
Jonathan Leffler le
2
@Jonathan: La page de manuel de whoamisur Leopard confirme qu'elle a été remplacée par id.
Naaff
Agh! Pourquoi changent-ils quelque chose qui existe depuis la nuit des temps?
dmckee --- ex-moderator chaton
29
qui suis-je pour dire? <boom-chacka>
kent
27

Si vous souhaitez afficher le nom complet (au lieu du nom d'utilisateur), ajoutez l' -Findicateur:

$ id -F
Andrew Havens
Andrew
la source
1
-F est une option illégale dans Mavericks - quand cela a-t-il commencé à fonctionner?
Eli B. du
11

qui suis je

ÉDITER

L'utilitaire whoami est devenu obsolète par l'utilitaire id (1) et équivaut à id -un. La commande id -pest suggérée pour une utilisation interactive normale.

dfa
la source
10

Par ici

Vérifier le propriétaire de / dev / console semble bien fonctionner.

stat -f "%Su" /dev/console

Lawrence Johnston
la source
1
Cela fonctionne très bien si vous êtes connecté à une machine et que vous voulez voir si un utilisateur est connecté localement. Si ce n'est pas le cas, la commande retournera "root".
Tim Dearborn
9

Je suis presque sûr que le terminal sous OS X est comme unix, donc la commande serait:

whoami

Je n'ai pas de mac sur moi pour le moment, alors quelqu'un me corrige si je me trompe.

NOTE - L' whoamiutilitaire est obsolète et équivaut à id -un. Cela vous donnera l'utilisateur actuel

Eric Koslow
la source
4

Si vous voulez savoir qui est actuellement connecté au système:

$ w
 15:56:14 jusqu'à 5 jours, 20:58, 6 utilisateurs, moyenne de charge: 0,43, 0,53, 0,50
UTILISATEUR TTY LOGIN @ IDLE JCPU PCPU QUOI
moi pts / 2 ven19 1: 03m 0.98s 0.98s - / bin / bash
moi pts / 3 09:55 6: 00m 0.43s 0.43s / bin / bash
moi pts / 5 15:56 0.00s 0.23s 0.00sw

(Cela provient d'un système Linux; le formatage sous OS X peut être légèrement différent, mais les informations devraient être à peu près les mêmes.)

Il peut y avoir plusieurs sessions de connexion; UNIX est conçu pour être un système multi-utilisateurs, après tout.

éphémère
la source
4

Vous pouvez également utiliser la lognamecommande du manuel des commandes générales BSD sous Linux ou MacOS pour voir le nom d'utilisateur de l'utilisateur actuellement connecté, même si l'utilisateur effectue une sudoopération. Ceci est utile, par exemple, lors de la modification du crontab d'un utilisateur lors de l'installation d'un package à l'échelle du système avec sudo:crontab -u $(logname)

Par man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
Adam Link
la source
1
C'est certainement la solution la plus propre et la plus simple. Cela fonctionne quel que soit l'utilisateur qui exécute la commande.
Maxime Viargues
2

La question n'a pas été complètement répondue, à mon humble avis. Je vais essayer d'expliquer: j'ai une entrée crontab qui planifie une procédure de commande bash shell, qui à son tour effectue un certain nettoyage de mes fichiers; et, une fois terminé, m'envoie une notification en utilisant le centre de notification OS X (avec la commande osascript -e 'display notification ...). Si quelqu'un (par exemple ma femme ou ma fille) change l'utilisateur actuel de l'ordinateur vers elle, me laissant en arrière-plan, le script cron échoue lors de l'envoi de la notification.

Alors, qui est l'utilisateur actuel signifie Est-ce que d'autres personnes sont devenues l'utilisateur effectif en me laissant en arrière - plan ? Est - ce que stat -f "%Su" /dev/consolerenvoie le courant utilisateur actif nom?

La réponse est oui; donc, maintenant, mon script shell crontab a été modifié de la manière suivante:

...
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
Maurizio Loreti
la source
2

obtenir le nom d'utilisateur dans le terminal MAC est facile ...

Je l'utilise généralement whoamien terminal ...

Par exemple, dans ce cas, j'en avais besoin pour installer Tomcat Server ...

entrez la description de l'image ici

Alireza
la source
2

Il y a deux façons

whoami

ou

echo $USER
monsieur robot
la source
1

Vous pouvez également le récupérer à partir des variables d'environnement, mais ce n'est probablement pas sécurisé, alors j'irais avec la réponse d'Andrew.

printenv USER

Si vous avez besoin de le récupérer à partir d'une application, telle que Node, il est plus facile de l'obtenir à partir des variables d'environnement, telles que

process.env.USER.

Ce qui serait cool
la source
1

Définissez «utilisateur actif».

Si la question est `` qui est l'utilisateur connecté '', alors `` qui suis-je '' ou `` whoami '' convient (bien qu'ils donnent des réponses différentes - `` whoami '' ne signale qu'un nom d'utilisateur; `` qui suis-je '' rapporte sur le terminal et temps de connexion aussi).

Si la question est «quel ID utilisateur est l'ID effectif du shell», il est souvent préférable d'utiliser «id». Cela rend compte de l'ID utilisateur et de l'ID de groupe réels et effectifs, ainsi que sur les ID de groupe supplémentaires. Cela peut être important si le shell exécute SUID ou SGID.

Jonathan Leffler
la source