Come posso ottenere il Nome completo dell'utente attualmente connesso tramite Terminale quando eseguito come root?

3

Questo comando funziona alla grande per elencare il nome completo:

finger $(whoami) | egrep -o 'Name: [a-zA-Z0-9 ]{1,}' | cut -d ':' -f 2 | xargs echo

Ma, se lo si esegue dopo un

sudo su

Restituisce l'amministratore del sistema di root CVMS

Mi chiedo se ci sia forse un altro posto in cui leggere la variabile Full Name? Esiste un oggetto User da qualche parte in grado di elencarlo? Pensavo di fare qualcosa con

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'

Ma non sembra che il nome completo sia rappresentato in quei dati di ritorno.

    
posta iMatthewCM 16.01.2017 - 19:04
fonte

3 risposte

1

Necessario un approccio su due righe:

username="$(stat -f%Su /dev/console)"
realname="$(dscl . -read /Users/$username RealName | cut -d: -f2 | sed -e 's/^[ \t]*//' | grep -v "^$")"

E quindi puoi semplicemente echeggiare la variabile realname.

    
risposta data 17.01.2017 - 01:17
fonte
2

Puoi usare dscl per leggere RealName:

$ dscl . -read /Users/grgarside RealName
RealName:
 George Garside

Quanto segue ti darà quello che cerchi. Questo usa 'who am i' per ottenere il nome utente, quindi sed per formattare l'output.

$ dscl . -read "/Users/$(who am i | awk '{print $1}')" RealName | sed -n 's/^ //g;2p'
George Garside
    
risposta data 16.01.2017 - 19:31
fonte
2

Usa semplicemente id -P $(stat -f%Su /dev/console) | awk -F '[:]' '{print $8}'

id -P $(stat -f%Su /dev/console) yield:

adminuser:********:501:20::0:0:AdminUser:/Users/adminuser:/bin/bash

awk -F '[:]' '{print $8}' restituisce l'ottavo termine (il "RealName") di un output separato da due punti.

Come proposto da fd0 puoi in alternativa utilizzare:

id -P $(stat -f%Su /dev/console) | cut -d : -f 8

che è ancora più semplice / elegante.

    
risposta data 17.01.2017 - 15:48
fonte

Leggi altre domande sui tag