Necesito obtener el UUID del usuario por nombre de usuario de la terminal (no de la propia máquina, sino del usuario local).
Respuestas
¿Demasiados anuncios?En lugar de obtener los identificadores de todos los usuarios y buscar el correcto, puede utilizar dscl /Search -read
para obtener sólo la información del usuario específico:
dscl /Search -read "/Users/$USER" GeneratedUID
Esto imprimirá algo como "GeneratedUID: B8A467BD-BCB8-47ED-9335-E0C187628DA7". Si desea sólo el propio UUID, puede canalizarlo a través de cut
:
dscl /Search -read "/Users/$USER" GeneratedUID | cut -d ' ' -f2
Dependiendo del UID que esté buscando (ya que existe el "UniqueID" y el "GeneratedUID"), puede encontrarlos con...
dscl . -list /Users UniqueID
...o...
dscl . -list /Users GeneratedUID
A continuación, también puede buscar por nombre de usuario; por ejemplo, el usuario conectado:
dscl . -list /Users GeneratedUID | grep $(whoami)
O si sólo desea el UUID, sin el nombre de usuario impreso, puede utilizar awk
para imprimir sólo el UID; por ejemplo
dscl . -list /Users GeneratedUID | grep $(whoami) | awk '{print $2}'
...o en lugar de $(whoami)
puede introducir el nombre de usuario que busca.
(Sólo he indicado el GeneratedUID para los ejemplos anteriores, ya que se trata de un simple intercambio de expresiones, es decir, basta con poner UniqueID en su lugar, si ése es el UID que buscas).