Der who
Befehl kann verwendet werden, um angemeldete Benutzer zu finden, druckt jedoch doppelte Werte, wenn mehrere Shells ausgeführt werden. Wie erhalte ich eine Liste der aktuell angemeldeten Benutzer ohne Duplikate?
command-line
users
who
Anony
quelle
quelle
who -q
Möglicherweise suchen Sie jedoch nach einem System, auf dem mehrere Benutzer gleichzeitig gehostet werden, sind sich jedoch nicht sicher.Antworten:
Wir können die Ausgabe von
who
toawk
weiterleiten, um nur die erste Zelle jedes Datensatzes (Zeile) zu drucken, und sie dann an den Befehlsort
weiterleiten, der die Werte alphabetisch sortiert und nur die eindeutigen-u
Einträge ausgibt :Oder wir können nur verwenden
awk
in dieser Art und Weise :Eine POSIX-kompatible Lösung von @dessert, bei
cut
der die Leerzeichen als Trennzeichen verwendet werden-d' '
und nur das erste Feld jedes Datensatzes gedruckt wird-f1
:Dank @DavidFoerster gibt es hier eine viel kürzere Syntax, bei der die Informationen aller anderen Spalten nicht verloren gehen:
Für die gleichen Zwecke könnten wir den Befehl
w
mit der Option-h
(Header ignorieren) verwenden, zum Beispiel:Wir könnten auch den Befehl in
users
Kombination mit dem Befehlrs
(Daten umformen) mit der Transponierungsoption verwenden-T
und dann noch einmalsort -u
:Wir könnten und
who -q
mit Transposition folgendermaßen verwenden - wobei der Befehlhead -1
nur die erste Zeile der Ausgabe des vorherigen Befehls zuschneidet:Siehe auch:
Wie finde ich heraus, wer als root angemeldet ist?
Wie erhalte ich die Liste der aktiven Anmeldesitzungen?
quelle
w
undwho
ist nicht alphabetisch sortiert, daher habe ich absichtlichsort -u
in der ersten Lösung verwendet. Auch die Ausgabe vonwho -q
sollte transponiert werden (wie im letzten Beispiel), sonst ist das Ergebnis nicht korrekt.