web-dev-qa-db-fra.com

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

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

49
Lawrence Johnston

comme 'whoami' est obsolète, son utilisation est probablement plus compatible avec les versions suivantes:

id -un
118
kent

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

$ id -F
Andrew Havens
21
Andrew

qui suis je

MODIFIER

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

8
dfa

Via ici

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

stat -f "%Su" /dev/console

7
Lawrence Johnston

Je suis à peu près sûr que le terminal sous OS X ressemble à unix, la commande serait donc:

whoami

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

5
Eric Koslow

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

 $  w  
 15:56:14 jusqu'à 5 jours, 20:58, 6 utilisateurs, charge moyenne: 0.43, 0.53, 0.50 
 CONNEXION TTY UTILISATEUR @ IDLE JCPU PCPU QUOI. -/bin/bash 
 pts/3 09:55 06:00 min 0.43s 0.43s /bin/bash
me pts/5 15:56 0.00s 0.23s 0.00s w.

(Il s’agit d’un système Linux; le formatage sous OS X peut être légèrement différent, mais les informations doivent ê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-utilisateur, après tout.

2
ephemient

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

Donc, Qui est l'utilisateur actuel signifie D'autres personnes sont-elles devenues l'utilisateur effectif me laissant en arrière-plan? Est-ce que stat -f "%Su" /dev/console renvoie l'utilisateur actuel actif name?

La réponse est oui; alors, 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
2
Maurizio Loreti

Vous pouvez également utiliser la commande logname du Manuel des commandes générales BSD sous Linux ou MacOS pour afficher le nom d'utilisateur de l'utilisateur actuellement connecté, même s'il effectue une opération Sudo. Ceci est utile, par exemple, lors de la modification de la crontab d'un utilisateur lors de l'installation d'un paquet système avec Sudo: crontab -u $(logname)

Par man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
1
Adam Link

Définir 'utilisateur actif'.

Si la question est "qui est l'utilisateur connecté", alors "qui suis-je" ou "whoami" est correct (bien qu'ils donnent des réponses différentes - "whoami" signale simplement un nom d'utilisateur; temps de connexion aussi).

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

1
Jonathan Leffler

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

J'utilise généralement whoami dans terminal ...

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

 enter image description here

0
Alireza

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 devez le récupérer depuis une application, telle que Node, il est plus facile de l'obtenir à partir des variables d'environnement, telles que

process.env.USER.

0
What Would Be Cool