Prova
getent passwd "$uid" | cut -d: -f1
Potrebbe piacerti questa piccola canzoncina.
$ id -nu [number]
3.17.3-1-ARCH #1 SMP PREEMPT ven 14 nov 22:56:01 CET 2014 i686 GNU/Linux
Posso confermare che restituisce un nome utente corrispondente, se esiste, su Arch Linux. Posso anche confermare che non funziona su Ubuntu quando viene eseguito come utente normale, anche se non l'ho testato come superutente. Inoltre non funziona su Alpine Linux. Forse una funzione di sicurezza ne impedisce il funzionamento su alcuni sistemi.
ls
esegue già quella ricerca. Puoi eseguire una ricerca delle informazioni dell'utente dalla riga di comando con getent passwd
.
Se ls
mostra un ID utente invece di un nome utente, è perché non c'è nessun utente con quel nome. I filesystem memorizzano gli ID utente, non i nomi utente. Se monti un filesystem da un altro sistema, o se un file appartiene a un utente ora eliminato, o se hai passato un ID utente numerico a chown
, puoi avere un file che appartiene a un ID utente che non ha un nome.
Su un host condiviso, potresti avere accesso ad alcuni file condivisi tra diverse macchine virtuali, ciascuna con il proprio database utente. Questo è un po' strano (perché condividere i file ma non gli utenti che li possiedono?), ma è tecnicamente possibile.