Ich suche nach dem echten Benutzernamen des eingeloggten Benutzers (vollständiger Name), um zu vermeiden, dass ich ihn in einer App, die ich gerade erstelle, darauf hinweisen müssen. Ich sehe, dass der Befehl finger
eine columned Liste von Daten ausgibt, die dies beinhaltet, und sich gefragt hat, ob es sinnvoll ist, das zu durchforsten oder gibt es einen einfacheren Weg? Keiner der Schalter für Finger, die ich gefunden habe, gibt nur den richtigen Namen aus. Irgendwelche Gedanken würden sehr geschätzt werden.
Sie können getpwent () verwenden, um alle aufeinander folgenden Passworteinträge zu erhalten, bis Sie diejenige finden, die der aktuellen entspricht angemeldeter Benutzer, dann analysieren Sie das Feld gecos .
Besser können Sie getpwuid () verwenden, um direkt den Eintrag für die Benutzer-ID des aktuellen Benutzers abzurufen.
In beiden Fällen
Hiermit wird zuerst die Zeile des aktuellen Benutzers aus der passwd
-Datenbank abgerufen (die möglicherweise auch in NIS oder LDAP gespeichert ist)
In der abgerufenen Zeile werden die Felder durch :
delimiters getrennt. Der Eintrag GECOS ist das fünfte Feld, also extrahiert das erste cut
das.
Der GECOS -Eintrag selbst besteht möglicherweise aus mehreren Elementen - getrennt durch ,
- dessen vollständiger Name das erste Element ist. Das ist es, was der zweite cut
extrahiert. Dies funktioniert auch, wenn im Eintrag GECOS die Kommas fehlen. In diesem Fall ist der gesamte Eintrag der erste Eintrag.
Sie können das Ergebnis auch einer Variablen zuweisen:
%Vor%Oder weiter direkt:
%Vor% %Vor%Ich benutze
%Vor%Erklärungen:
grep
) extrahiert aus /etc/passwd
die Zeile über diesen Benutzer awk
) teilt diese Zeile mit dem Trennzeichen ':'
und druckt die fünfte Komponente,
Das ist der vollständige Name Wenn Sie sich nicht darauf verlassen wollen, dass $USER
gesetzt ist, können Sie stattdessen Folgendes verwenden:
Tags und Links unix